From 94dbd6f5342826308b4bd0cc13d87e9427f86dfd Mon Sep 17 00:00:00 2001 From: JP Hutchins Date: Tue, 23 Jun 2026 16:22:59 -0700 Subject: [PATCH] test(integration): cover MCUboot raw serial recovery (SMPSerialRawTransport) The raw-framing analog of test_serial_recovery.py: an app reboots into MCUboot serial recovery and the bootloader's raw (non-console) recovery server (BOOT_SERIAL_RAW_PROTOCOL, mcu-tools/mcuboot#2755) reassembles a fragmented image upload over SMPSerialRawTransport. - servers.py: add QemuSocketSerialRawTransport, the socket-backed raw transport for the emulated mps2 fixture. Both socket fixtures override only connect() (via the shared _connect_socket_chardev) and inherit send()/receive()/framing from the real transports, so the suite exercises the real send rather than a copy of it. pyserial's socket chardev exposes no out_waiting, so connect supplies one (0) -- keeping the inherited send's _drain_tx a no-op without touching the production transport. - conftest._build_transport: route serial_raw socket endpoints to the new transport (exhaustive match with assert_never). - test_serial_recovery_raw.py: reboot -> reconnect raw -> upload -> assert reassembly + chunk maximization, at mtu 384 and 1024. - test_image_management.test_dfu_upload: accept the raw transport (first img-group raw fixture); the line-packet burst skip stays encoded-only. - consolidate the duplicated _signed_image into conftest.signed_image. - vendor only the new mps2_an385 serial_recovery_raw fixture from smp-server-fixtures c8f44c41 (distinct artifact prefix; the 0eae053d set is untouched). manifest.json + SHA256SUMS merged additively; VERSION documents the mixed provenance. Closes #118 Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01KKXy7L2Udjw929nie2c363 --- tests/fixtures/smp-server/SHA256SUMS | 4 +- tests/fixtures/smp-server/VERSION | 21 +- tests/fixtures/smp-server/manifest.json | 25 + ...8f44c41_mps2_an385_serial_recovery_raw.hex | 2629 +++++++++++++++++ ..._mps2_an385_serial_recovery_raw.signed.bin | Bin 0 -> 132504 bytes tests/integration/conftest.py | 28 +- tests/integration/servers.py | 93 +- tests/integration/test_image_management.py | 36 +- tests/integration/test_serial_recovery.py | 9 +- tests/integration/test_serial_recovery_raw.py | 103 + 10 files changed, 2885 insertions(+), 63 deletions(-) create mode 100644 tests/fixtures/smp-server/zephyr_f33aa2bc4a43_smp_server_c8f44c41_mps2_an385_serial_recovery_raw.hex create mode 100644 tests/fixtures/smp-server/zephyr_f33aa2bc4a43_smp_server_c8f44c41_mps2_an385_serial_recovery_raw.signed.bin create mode 100644 tests/integration/test_serial_recovery_raw.py diff --git a/tests/fixtures/smp-server/SHA256SUMS b/tests/fixtures/smp-server/SHA256SUMS index d200696..6f92524 100644 --- a/tests/fixtures/smp-server/SHA256SUMS +++ b/tests/fixtures/smp-server/SHA256SUMS @@ -1,4 +1,4 @@ -ddc72e438e364199b20108a8173a141e36d4268b35a6cfa2e03ff9b88e34d871 manifest.json +8872b14a4b61e46b32140a2b5b717208db6c4ddf6ab35d3743cc44a252819a89 manifest.json 29176dac9fa963db772f0ff8d7e59103543261c9db0ba27b31d659c499819500 zephyr_4.4.0_smp_server_0eae053d_mps2_an385_serial.elf b17a5dbbd22e00e6e7b081e4e7e0996d8bfb4f87c1de245b96800a6e96b54d32 zephyr_4.4.0_smp_server_0eae053d_mps2_an385_serial_recovery.hex 5dd5061002766e3aca3c5a3c37143d08bd8ad1be56acc7ada6acaf8d2d7b0a85 zephyr_4.4.0_smp_server_0eae053d_mps2_an385_serial_recovery.signed.bin @@ -41,3 +41,5 @@ c32299e6711d95558df01da315b921f736dc5be2fb8988d2506931892b4f045c zephyr_4.4.0_s e96f3b40d10418018caa1c3f9776d3bbdd542f5612e3caad3a223bb0b2a24c54 zephyr_4.4.0_smp_server_0eae053d_qemu_cortex_m0_serial.signed.bin bf5b803bc5b3a108e7c5bfba025a6b923bf39603525b9e980638940dd24dd482 zephyr_4.4.0_smp_server_0eae053d_qemu_cortex_m0_serial_buf256.hex 5cb70b1a4dee7ec367dd298813e40e01f05f62f408025c607880a3f1f8e96fa5 zephyr_4.4.0_smp_server_0eae053d_qemu_cortex_m0_serial_buf512.hex +2149538f5e63f22dec814114f8c4d67d721fd8b8e2957874eaa3b77303297732 zephyr_f33aa2bc4a43_smp_server_c8f44c41_mps2_an385_serial_recovery_raw.hex +eb19b7531adf99dac5d6b52fd2ed56c8113a574e0ddce903e29e09a30af70933 zephyr_f33aa2bc4a43_smp_server_c8f44c41_mps2_an385_serial_recovery_raw.signed.bin diff --git a/tests/fixtures/smp-server/VERSION b/tests/fixtures/smp-server/VERSION index a349098..9256ab4 100644 --- a/tests/fixtures/smp-server/VERSION +++ b/tests/fixtures/smp-server/VERSION @@ -10,10 +10,23 @@ # zephyr: 4.4.0 # # The integration harness builds its fixture registry from the vendored -# `manifest.json` (also from this release) and verifies each artifact against -# `SHA256SUMS` before launch; see tests/integration/servers.py. Only the subset -# of artifacts actually committed here become live fixtures — the manifest lists -# the full release so adding one is just `gh release download --pattern ...`. +# `manifest.json` and verifies each artifact against `SHA256SUMS` before launch; +# see tests/integration/servers.py. Only the subset of artifacts actually +# committed here become live fixtures — the manifest lists the full release so +# adding one is just `gh release download --pattern ...`. +# +# Additional pin (one fixture only) — `serial_recovery_raw`: +# tag: c8f44c41 https://github.com/intercreate/smp-server-fixtures/releases/tag/c8f44c41 +# commit: c8f44c4179... (smp-server-fixtures); zephyr: main f33aa2bc (post-4.4.0) +# +# MCUboot's raw (non-console) serial-recovery protocol (BOOT_SERIAL_RAW_PROTOCOL, +# mcu-tools/mcuboot#2755) merged after 4.4.0's MCUboot pin, so this one fixture is +# built from a post-4.4.0 Zephyr `main` commit. Its artifact name carries the +# c8f44c41 release hash and so does not collide with the 0eae053d set. `manifest.json` +# and `SHA256SUMS` are therefore a local merge: the 0eae053d baseline plus this +# fixture's manifest entry + digests (the `manifest.json` digest line was refreshed +# to match the merge). When 0eae053d's Zephyr next includes #2755, re-vendor the whole +# set from a single release and drop this note. # # To bump: re-download the artifacts + SHA256SUMS + manifest.json from a newer # per-commit release and update the `tag` above. diff --git a/tests/fixtures/smp-server/manifest.json b/tests/fixtures/smp-server/manifest.json index 81abe66..2b9993a 100644 --- a/tests/fixtures/smp-server/manifest.json +++ b/tests/fixtures/smp-server/manifest.json @@ -716,5 +716,30 @@ "target": "qemu_cortex_m0", "transport": "serial", "udp_port": null + }, + { + "artifact": "zephyr_f33aa2bc4a43_smp_server_c8f44c41_mps2_an385_serial_recovery_raw.hex", + "buf_count": 4, + "buf_size": 384, + "config": "serial_recovery_raw", + "groups": [ + "os", + "img", + "stat", + "settings", + "fs", + "shell", + "enum", + "zbasic" + ], + "ip_family": null, + "line_length_max": 128, + "mcuboot": true, + "qemu_cmd": "qemu-system-arm -cpu cortex-m3 -machine mps2-an385 -nographic -chardev socket,id=con,host=127.0.0.1,port=,server=on,wait=off -serial chardev:con -serial null -monitor none -device loader,file=zephyr_f33aa2bc4a43_smp_server_c8f44c41_mps2_an385_serial_recovery_raw.hex -device loader,file=zephyr_f33aa2bc4a43_smp_server_c8f44c41_mps2_an385_serial_recovery_raw.signed.bin,addr=0x20050000", + "run": null, + "serial_recovery": true, + "target": "mps2_an385", + "transport": "serial_raw", + "udp_port": null } ] diff --git a/tests/fixtures/smp-server/zephyr_f33aa2bc4a43_smp_server_c8f44c41_mps2_an385_serial_recovery_raw.hex b/tests/fixtures/smp-server/zephyr_f33aa2bc4a43_smp_server_c8f44c41_mps2_an385_serial_recovery_raw.hex new file mode 100644 index 0000000..cfaa716 --- /dev/null +++ b/tests/fixtures/smp-server/zephyr_f33aa2bc4a43_smp_server_c8f44c41_mps2_an385_serial_recovery_raw.hex @@ -0,0 +1,2629 @@ +:10000000A04F0020011E0000C1190000ED1D0000DE +:10001000ED1D0000ED1D0000ED1D000000000000C2 +:100020000000000000000000000000007D1E000035 +:10003000ED1D000000000000D11F0000C1270000DE +:100040003D2000003D2000003D2000003D2000003C +:100050003D2000003D2000003D2000003D2000002C +:100060003D2000003D2000003D2000003D2000001C +:100070003D2000003D2000003D2000003D2000000C +:100080003D2000003D2000003D2000003D200000FC +:100090003D2000003D2000003D2000003D200000EC +:1000A0003D2000003D2000003D2000003D200000DC +:1000B0003D2000003D2000003D2000003D200000CC +:1000C00010F8012B11F8013B012A28BF9A42F7D002 +:1000D000D01A7047034613F8012B002AFBD1181AD7 +:1000E00001387047492108B5094803F0F7FD01F0D0 +:1000F00063F8024620B14421064803F0EFFDFEE715 +:10010000054801F07DFB4421044803F0E7FDFEE7CC +:100110004A5B00006E5B0000105800009C5B000012 +:1001200030B587B003F0C8FD03F0C7FD49211E4874 +:1001300003F0D4FD03F0B9FD03A800F0DBFD044695 +:100140001A4D44212A68131A5A425A41184803F09A +:10015000C5FD03F080FD28B14421164803F0BEFD23 +:10016000FFF7C0FF2B68A34202D045211248F5E7F4 +:10017000039B49215A68114803F0B0FD03991048C8 +:100180004B7D0A7DC98A0091492103F0A7FD4921D1 +:100190000C4803F0A3FD03A800F02AF845210A4803 +:1001A00003F09CFDFEE700BFD75B00008C0200203F +:1001B000F05B0000155C0000355C0000585C00003E +:1001C000875C0000A55C0000CA5C000021B1012929 +:1001D00006D06FF015007047044B53F8300070479D +:1001E000024B03EBC0035868704700BF185800006B +:1001F00010B502680D4C536812891344236004F053 +:10020000D7FB01F053FB01F027FE23681B6883F343 +:100210000888002383F31488BFF36F8FBFF36F8FB9 +:100220002368BDE810405B68184700BF80020020CB +:1002300008B5024803F044FD002008BDF55C00004D +:10024000014B1B68184700BF00000020014B1860DD +:10025000704700BF0000002030B5044685B00D4651 +:1002600010220021684605F084F802238DF8023040 +:10027000044B2A4621466846019303F0B3FB05B0C0 +:1002800030BD00BF41020000044608B5EFF3118302 +:10029000202383F31288BFF36F8F04F089FB20467D +:1002A00001F0C8FD024803F00BFD03F053FFFCE72B +:1002B000325D0000014B03600020704720580000B1 +:1002C000F8B506460C4600230A4F3D6825B95BB9D0 +:1002D0003C6000202660F8BD31462868FFF7F0FE3C +:1002E00020B12B466D69F1E75C61F2E76FF07700B2 +:1002F000F1E700BF8402002070B5104B0D461C686A +:10030000B4B10F4B196800238B4202DB6FF0010080 +:1003100070BD224612F8106B864202D0144601339B +:10032000F2E7E06804F009FF28B100202C60EFE755 +:100330006FF00C00ECE76FF01200E9E7040000201A +:100340002058000080B505460E461746984603F033 +:1003500017F9034601F084FE0446DFF81890424680 +:1003600049F8003039463046A84754F8090001F0F2 +:1003700019FE00BF080000002DE9F347174642F2BE +:100380001602424DADF800202A888046ADF80220C2 +:1003900000220C461E4601921BB9032002B0BDE8A4 +:1003A000F087DFF8EC9099F8003053B9394803F042 +:1003B00098FF384803F020FF374B1860012389F875 +:1003C00000304FF00409B5F800A0CA4524D8C4F3A2 +:1003D0000B0444EA0830BCB2B5F80080ADF8040064 +:1003E000201D80B24044B0F5803FADF80640D4DA1D +:1003F000294B80B21B68834246DB042341460DEB48 +:100400000302244803F048FF0246D8B1452123489F +:1004100003F064FC0420C1E7042349461D480DEBAA +:10042000030203F0FFFE58BBBDF80430B8EB133FE6 +:1004300003D1C3F30B03A34224D0BDF80630043329 +:100440009944C2E708F104013B463246114803F0E3 +:1004500023FF014618B1024645211148D8E72B88F1 +:100460006A4604331C44A4B204230A482C80ADF825 +:10047000024003F011FF003818BF012080008DE713 +:1004800005208BE7022089E7012087E7A8000020EC +:10049000EE100020D8550000880200206C5D00009E +:1004A000995D00002DE9F04F9B4682460E4691462D +:1004B000484F9DB044214848299D3C6803F00EFCFC +:1004C000289B0DF150080393279B4A460293269BD5 +:1004D0003146009350465B46CDF8048000F08CF81E +:1004E00078BB5DB1C4462B46624603CA59601CA95D +:1004F0008A421860944603F10803F5D100234A4666 +:10050000009331464FF6FF7306A800F09BF80546AE +:1005100028B144210246314803F0E0FB11E0DDF848 +:100520002CB044215B460A9A2D4803F0D7FB49467C +:10053000504603F064FC58452AD24421294803F070 +:10054000CDFB3C6842E0934237D1102A20D14421B0 +:10055000254803F0C3FBBDF81030202BF1D1059ADC +:100560007368134403F120050CAA144618685968EF +:10057000083303C4AB422246F7D1202240460CA9DF +:1005800003F03BFC0446194B01251B689842D8D167 +:100590000DF1120304AA05A906A800F09FF800288F +:1005A000CFDB11D1059906A803F019FCBDF8122084 +:1005B0000028CAD14FF6FF700D4931F8023B834243 +:1005C000C1D144210B48A7E7012DBAD120461DB067 +:1005D000BDE8F08F0C000020D45D0000FE5D00003F +:1005E000325E0000615E0000C45E00008C020020EC +:1005F0002C5B0000935E000070B511489CB00C4667 +:10060000DDE92256442103F069FB684600F0F0FC66 +:1006100035B1002E04DD32462946684603F08FFCD2 +:100620006289238961681344E26868461A4403F0CA +:1006300086FC6946219803F0A8FC00201CB070BD20 +:10064000F85E00002DE9F3411E4604469DF8208027 +:100650000D4617464346324644211F4803F03EFBF1 +:1006600024B94FF0FF3002B0BDE8F081002DF8D082 +:10067000002FF6D046F6081CEB68298919446B68F0 +:100680005A5858181FFA82FE0192E6456B891FD10D +:10069000B3EB124F4FEA124CE3D15CF800300193F8 +:1006A00046F60713BDF804209A42DAD1C4E9005790 +:1006B000268184F80A806B89BDF806200B44E3602C +:1006C0006B89002013440B44043163612161CAE744 +:1006D000002BE5D0C5E700BF0F5F00002DE9F74311 +:1006E0000D4616461F46044600283BD00368002BE3 +:1006F00038D04368002B35D04FF6FF78436944214A +:1007000001930369009302894FF6FF732E4803F0AB +:10071000E5FAD4F814E02269724503D34421228912 +:100720002A4807E0A07A48B1E368934206D84421FA +:100730002289274803F0D2FA012015E021684B896D +:100740002BB1E368934202D104322261E3E770B136 +:10075000E3689A4202D8981A03280AD844211D480F +:1007600003F0BCFA4FF0FF3003B0BDE8F0837346EE +:10077000EFE7496804388958B0EB114FC1F30F49CE +:100780004FEA114C02D244211348E9E720898BB289 +:10079000404501D0984214D107B13B8023690F48EE +:1007A00004332B60A6F8009023698AB204336344B3 +:1007B00023613388442100932B6803F08FFA0020D3 +:1007C000D2E704326244C0E7415F00009860000055 +:1007D000975F0000CF5F0000156000005E600000C2 +:1007E0002DE9F04306460C4685B0CDE9002391463D +:1007F0001F4602460B462348442103F06FFAB368B4 +:10080000A34239D91B1B4B4536D344211E4803F064 +:1008100065FA0FB32146304602AA03F02BFA051EF3 +:100820002CDB013CDDF808804C442146304602AA0E +:1008300003F020FA051E21DBDDE9024930464A4675 +:10084000214603F0A9FA051E18DB03F036FA77B14A +:10085000444513D9013CE8E7611E304602AA4944E9 +:1008600003F008FA051E09DBDDF80880DDE74C44DB +:10087000A04503D30134D8E74FF0FF35284605B033 +:10088000BDE8F083C660000013610000F7B51446B0 +:10089000CDE9002305460E461F4602460B46084892 +:1008A000442103F01BFA44B13B4622463146284618 +:1008B00003B0BDE8F040FFF793BF204603B0F0BDA2 +:1008C0003D6100002C2310B559434218146A0CB93D +:1008D00003F05DFC41580D4B994206D1D168138954 +:1008E0005B1802D25189C91801D300200CE0A3681B +:1008F0009942FAD2106920F4F97020F00100000545 +:10090000000DB0FA80F0400910BD00BF3DB8F3966D +:100910001FB52C2303FB02010A6A0AB903F037FC56 +:100920000023CDE9023301934FF480730093034B0E +:10093000FFF7B8FD05B05DF804FB00BFEF10002025 +:1009400030B505460C464B8885B003934B7802932F +:100950000B784421019343880093437802780D4833 +:1009600003F0BCF92A7823789A4210D80CD36A781D +:1009700063789A420BD807D36A8863889A4206D86C +:1009800060EB000005B030BD4FF0FF30FAE701200A +:10099000F8E700BF646100002C2370B503FB01047D +:1009A0000D46266A00F06AF82A460346314620467C +:1009B00000F00AF8044618B14521024803F08EF908 +:1009C000204670BD9A610000F0B51D460623002444 +:1009D000012787B08DF80720244A254E51681068FA +:1009E0008DF80D3004AB03C331788DF80E408DF8CF +:1009F0000F70A1BB3A4602200DF10D03FFF7BCFCBE +:100A0000044660BB3A46394602200DF10E03FFF75B +:100A1000B3FC044618BB02213A4608460DF10F0309 +:100A2000FFF7AAFC0446D0B93A46032102200DF193 +:100A30000703FFF7A1FC044688B90822042102201D +:100A400004ABFFF799FC044648B92B7853B1042254 +:100A5000052102202B1DFFF78FFC18B1044620460C +:100A600007B0F0BD01233370F9E700BF085800005C +:100A7000EF1100200048704798020020004870479E +:100A8000900200202DE9F84305464FF000083D4E46 +:100A90002B6E013373D195F8643095F86520013BD6 +:100AA000DAB1013323D005F1140105F14000FFF75D +:100AB00047FF431E5C425C4128462C6600F02CF93F +:100AC0000346C0B12146284600F08EF94FF0FF33AF +:100AD0002C4484F864802B66DAE7013309D149217C +:100AE000294803F0FBF8294B1868BDE8F883012476 +:100AF000E2E71446E0E74FF02C0909FB04592246CF +:100B00004421234803F0EAF8D9F820700FB903F024 +:100B10003EFB2146284603F0C0F920B9D9F8101051 +:100B200011F0100908D01B4B18683368834226D097 +:100B3000284600F045F9C9E721462846FFF7C2FEDE +:100B4000B8B915482246442103F0C8F80F4B18687D +:100B500033688342E9D0114B114A4521002C18BF5C +:100B60001A46104803F0BAF82146384603F090F9C7 +:100B7000D9E7224649462846FFF7CAFEE8E7014B77 +:100B8000B2E700BF8C020020DB6100000C000020F7 +:100B9000FD6100000800002035620000D161000006 +:100BA000C96100006A6200002DE9F043DFF81C9182 +:100BB00085B004460F46D9F8006003F093F9024669 +:100BC00028B1D9F80060304605B0BDE8F083014691 +:100BD000204603F06FF9054648B157213C4803F021 +:100BE0007DF8204603F096F9002DEAD1EBE70146A7 +:100BF0002046FFF767FE70BB2A464921354B364831 +:100C000084F8645003F06AF801212046FFF75AFE89 +:100C1000024600282FD0012384F86530636C4921F7 +:100C20000293B4F842302D4A019394F841302C4895 +:100C3000009394F8403003F051F84FF0FF332366EF +:100C40002046FFF71FFF0646264B1B6883421AD03B +:100C5000D9F80060C5E7012384F86430A36949210D +:100C60000293E38A204A0193637D1D480093237D0C +:100C700003F034F8C8E784F8650049211B4B164897 +:100C800003F02CF8D9E7204694F86010FFF784FEB3 +:100C900005460028DCD1226E14490E4B002A18BFED +:100CA0000B4602464921124803F018F82C22236E05 +:100CB00002FB0348D8F8200002F0DAFF3871D8F8B8 +:100CC00020305B68C7F80080BB608AE70C0000201A +:100CD00092620000C9610000B56200000863000074 +:100CE000E46200008C020020DC620000D1610000A0 +:100CF0001263000010B50446064803F00CF90548DD +:100D00002146FFF751FF0446024803F0C0F8204691 +:100D100010BD00BF98020020F7B52C25016E0646D5 +:100D200005FB01052B699B063BD501AA6F6803F003 +:100D300069F80446A8B91C4A019B9742B766F36656 +:100D400008D9D91906D2194A914203D8286A58B944 +:100D500003F01DFA3B4600224921154802F0BEFF70 +:100D60000324204603B0F0BD21463A4602F0EAFFD4 +:100D7000044678B10346002249210E4802F0AEFF36 +:100D80003B46002249210C4802F0A8FF0023C6E997 +:100D90001A33E6E702463B464921084802F09EFF27 +:100DA000DFE70324F2E700BFFFFF232000F03F202E +:100DB0003863000068630000A2630000CF63000096 +:100DC00010B50446836E00224921064802F086FFD2 +:100DD0000021E26EA06E04F0CCFA0020C4E91A00F3 +:100DE00010BD00BFFF63000038B500220B4605466A +:100DF0000C460848492102F071FF2C2303FB0455DF +:100E0000286A08B903F0C3F92146BDE8384003F069 +:100E10003FB800BF306400002DE9F04F00260368A2 +:100E20009DB002934368DFF8C0E1039383688A466C +:100E3000DDE902150493C36805930369DDE904B78E +:100E40000693436907938369DDE9062C0893C36918 +:100E500098460993089B00935AF806400CAB24BAB5 +:100E60005EF8049B9C514FEAF223A14483EAB2133B +:100E7000009C83EA72634B4424EA020402EA0C09F0 +:100E800084EA09042344434485EA0B044FEA713899 +:100E900088EAB1080C4005EA0B0984EA090488EAEB +:100EA000B1580436A044402E03EB070443445F4688 +:100EB000DDF8008040F088804FF0100A4B4E0A9613 +:100EC00056460AF1010A0DF1700E0AF00F070EEBFB +:100ED000870757F8407C06F00F094FEAB74801979B +:100EE00088EAF71806F10E0707F00F070EEB8707E1 +:100EF00057F8407C09364FEAF74E8EEA774ECDF828 +:100F00002CE006F00F060DF1700E0EEB86060EEBD0 +:100F1000890959F840EC56F8406CBAF1400F764414 +:100F2000DDF804E088EADE08DDF82CE046448EEACD +:100F3000972E764404EA02084FEAF42E2CEA0407BE +:100F400087EA08078EEAB41EDDF828808EEA746E00 +:100F5000774458F804EF49F8406C77443744009ED2 +:100F60004FEA733E3E4481EA0507CDF828808EEAB9 +:100F7000B30E07EA030701EA05088EEAB35E87EAC3 +:100F800008077744374406EB0B0ECDF800C0AB469C +:100F900022D1029E3E440660039E1E44049B46608E +:100FA0000B448360059B2B44C360069B7344036121 +:100FB000079B23444361089B13448361099B63445B +:100FC000C3611DB0BDE8F08FAB46CDF800C00D4643 +:100FD0009446194622463FE794460D462246194656 +:100FE00074463B466CE700BF64580000A058000000 +:100FF00010B50446C8B17022002103F01AF80B4B5B +:101000000B4A0C49C4E900230B4B0C48C4E90213FA +:101010000B4BC4E9040301200A4BA36103F1745391 +:10102000A3F52303A3F69243E36110BD85AE67BB2E +:1010300067E6096A72F36E3C3AF54FA57F520E518E +:101040008C68059BABD9831FF7B5274E3068836842 +:101050005B6C03B19847306883685B6B002B2AD1C7 +:10106000224C234D234F306883689B69002B2CD082 +:101070000DF10701012298470128216825D141B9C6 +:101080002968E9B16A680B6891422B6000D16B60F6 +:1010900021603A889DF80700531C9BB20A447F2BBD +:1010A0003B801072DFD94B60134802F0C4FF00236D +:1010B0003B802360D6E798470028D1D103B0F0BD2C +:1010C00045210E4802F00AFEF8E721680029F5D014 +:1010D000084A1388002BF1D04B60074802F0ABFFA1 +:1010E000002313802360E9E768070020080300203D +:1010F00020030020EC100020180300205A64000098 +:1011000010B5044B044618688368E1B25B689847E1 +:10111000204610BD680700202DE9F047DFF88490D5 +:101120008046D9F800500C4617461F4E65BBEFF3BA +:10113000118A202383F31288BFF36F8F1B4A116833 +:1011400029B11B4843688B4201D002F074FF194853 +:10115000036833B1D0F804C019686345016008BF63 +:1011600041608AF31188BFF36F8F136043B919464A +:101170001A463360C9F800103A602846BDE8F08787 +:1011800003F108025D683260AC42A8BF2C463168AA +:101190002246404604F0C6F83368291B0122254642 +:1011A0002344E6E714030020100300200C03002072 +:1011B000200300201803002037B5204D2B7813B1F1 +:1011C000002003B030BD1E4A1E48C2E900331A4653 +:1011D000C0E900331C49013202F02DFF082A01F159 +:1011E0008801F8D1194C1A48206003F0A6FF10B30B +:1011F0002068836823B19B6C13B10022154998477E +:10120000206883685B6B0BB1984748B1206883689E +:101210009B69002BFAD001220DF107019847F4E7F2 +:1012200000220D4B20681A8083689B6A03B198479F +:1012300001232B70C4E74FF0FF30C2E7F01100200C +:101240001803002020030020280300206807002046 +:101250008455000049100000EC10002070B5114BBF +:10126000114D1C68114B641B1868114E037808213E +:101270005A1C62F3020303700023437063BA438075 +:1012800083885BBA838033685B68984733682146FC +:1012900028465B689847BDE870404421054802F045 +:1012A0001DBD00BF78070020F1110020C0070020FD +:1012B000C4070020986400002DE9F0474FF0FF3488 +:1012C00000250B460121D4B00594069407940AAE7C +:1012D0000246C6E90055089530A80091CDE90155B0 +:1012E0000421099503F044FE4022294620A804F079 +:1012F00040F8814B03211C93052304221D937F4B4F +:101300000DF1180ACDE91E3A7D4B7E4821937E4BA4 +:1013100005AFCDE923367D4B0DF11C0826937C4BA0 +:10132000CDE92B01CDE92838CDE92D37279109AB3F +:101330001CA930A808AC229202F095FE30B3032518 +:101340002A464421734802F0C9FC0A21724803F07E +:10135000C8FE72490222704803F0B6FE29466E4864 +:1013600003F08FFE4DB9674903226B4803F0ACFED2 +:101370006B4B6948196803F08EFE0A21664803F03A +:10138000B8FEFFF76BFF54B0BDE8F0873B685A1C0E +:10139000D5D0D6F80090B9F1000FD0D07668614A68 +:1013A00033B9DAF80010B1F1FF3F18BF0B461360F4 +:1013B00000211068FEF70AFF2146C0B2FEF79CFF2D +:1013C00005460028BBD13B68554F002B3DD1206816 +:1013D000D8F8003082683D609342B0D82B46294649 +:1013E000FFF7FEF90028AAD1D8F800204E4B1A606A +:1013F000206802F0E6FCB6FBF0F303FB00FA3A6863 +:10140000494902EB0A030968A6EB0A0698198842C3 +:1014100038BF00264421454802F060FC206802F0F5 +:10142000D0FC0128D04606D9206802F0CAFC013859 +:1014300019EA000F3DD153464A463968206802F048 +:1014400096FC00287FF47BAF2DE03A6893427FF44E +:1014500077AF354A334412689342C9D96FE7C24522 +:10146000206828BFC24602F0B3FC402201460CA807 +:1014700003F07FFF524649460CA803F053FF534642 +:10148000396820680CAA02F072FC08B1054657E7DB +:101490003B68D14453443B60A8EB0A08206802F043 +:1014A00090FC4045DBD93EB93B68334443443B6044 +:1014B00046E74FF0400AF1E7206802F089FC082275 +:1014C00001460CA803F055FF324609EB08010CA8B1 +:1014D00003F028FFD4F800903968484608EB01046F +:1014E00002F06FFC214603460CAA484602F03FFC7E +:1014F00000287FF424AFD7E7A06400009F4D0000D0 +:10150000A6640000AB640000A94D00008C6B0000D5 +:10151000A54D0000CF64000078070020DD640000C6 +:1015200070070020740700206C070020AF640000E3 +:1015300010B504460A210A4803F0D3FD02220949E6 +:10154000074803F0C1FD2146054803F09AFD0A2132 +:10155000034803F0CEFDBDE81040FFF77FBE00BF9B +:1015600078070020DD640000002307B50221009306 +:10157000034AA423034803F0BEFD03B05DF804FB57 +:10158000F1110020780700202DE9F04F07290446CB +:10159000ADB040F21981037813F0050F40F01481CB +:1015A0004388A1F108055BBA9BB2AB42C0F00C8145 +:1015B000874B186083885BBA8380FFF7D5FFA688C6 +:1015C000012E40F0E880E37923B1012B00F0DB80AD +:1015D0000820F4E02778FFF74DFA054602F09BFC5F +:1015E000284602F07FFC07F00707044688B1024650 +:1015F0004521784802F072FB3446284602F047FC49 +:1016000014B12046FFF794FF2DB0BDE8F04FFFF76F +:10161000ABBF002F40F0B58031466F4803F061FD4D +:1016200006226E496C4803F04FFD05216A4803F01D +:1016300054FD2746DFF8A881DFF8A891DFF8A8A1BC +:101640007B4205F1200203F02C03D658002E6AD00D +:101650002023002130460CAAD8F800B002F072FB1B +:101660000C9B4B450CD10023CDE902330193402361 +:101670003246009328461CAB0CA9FEF713FF8346A5 +:10168000DAF800305B454ED10023324600930CA9B6 +:101690004FF6FF7306A8FEF7D5FF002856D04FF08F +:1016A000FF3614214C4803F01CFD504904224A48DF +:1016B00003F00AFD3946484803F0EDFC4EB9042218 +:1016C0004B49454803F000FD2022434814A903F08C +:1016D000F2FC07224749404803F0F6FCBDF84630CB +:1016E0001CAE01939DF845304021009330469DF893 +:1016F0004430414A02F04CF9129B43B1421E3E2A4B +:1017000005D8C0F140013D4A304402F041F930466D +:10171000FEF7E0FC314602462F4803F0D5FC1421C9 +:101720002D4803F0E6FC7B1C022B4FF0010787D10C +:101730000521294803F0D9FC3946274803F0D9FC94 +:10174000FFF78CFD284602F0E5FB56E70DF112038A +:1017500004AA05A906A8FEF7C1FF00289FD1BDF87D +:101760001230102BF2D1BDF81030202B97D130461B +:10177000059914AA02F0E6FA061E18BF0126764261 +:101780008FE70824DEE7294604F108002DB0BDE804 +:10179000F04FFFF791BD002E7FF41AAFE379012BD4 +:1017A0000CD0052B7FF414AF3046FFF7C1FE192093 +:1017B000002103F081FD0120FEF766FD30462DB0CB +:1017C000BDE8F04FFFF7B4BE2DB0BDE8F08F00BF0D +:1017D000C0070020E06400007807002004650000D6 +:1017E0000C0000203DB8F3968C0200200B65000031 +:1017F00010650000156500001D65000029650000EA +:101800002DE9F3470027012380463C46DFF89090FE +:10181000244E89F80030244B186099F8003013B931 +:1018200002B0BDE8F08702F048FAC4F58061D8F84C +:10183000003001AA013130199847002801DC019BD2 +:101840003BB1044402F032FA40F2014A0746072C49 +:101850000ADC002CE1DD02F029FA40F6B733C01BA8 +:10186000984288BF0024D8E7758833786DBAADB246 +:1018700013F0050F05F1080501D1554501DD0024E0 +:10188000CBE7A542E7DC29463046FFF77DFEA542BF +:10189000F5DA641B22463046711903F051FDD6E794 +:1018A0009512002096120020C4070020BFF36F8F0E +:1018B00072B64FF0FF32114BC3F88020C3F884207A +:1018C000C3F88820C3F88C20C3F89020C3F8942074 +:1018D000C3F89820C3F89C20C3F88021C3F8842162 +:1018E000C3F88821C3F88C21C3F89021C3F8942150 +:1018F000C3F89821C3F89C21704700BF00E100E0C5 +:1019000008B50348034A0021121A02F002FC08BD80 +:10191000E0000020A0160020074808B5074A084943 +:10192000121A02F0F8FBBDE808400648064A0749CB +:10193000121A02F0F0BB00BF00000020DC00002003 +:10194000FCA200000000002000000020FCA200001B +:1019500037B505460C46C9B18B6814480093D1E9E8 +:101960000023452102F0BAF9636945210093D4E9C7 +:1019700003230F4802F0B2F94521E2690D4802F055 +:10198000ADF94521A2690C4802F0A8F9012D06D154 +:10199000EFF3058245210948103A02F09FF92146EC +:1019A000284603B0BDE8304001F000B82D650000C6 +:1019B0006165000095650000A9650000DC65000018 +:1019C00008B5034B1B689847BDE8084000F0DABA39 +:1019D0001000002030BFFFF7FDBF00BF2DE9F04130 +:1019E00005460B4EDFF82C80324606EB0807CC1B71 +:1019F0002046094903F096FCA01942460021083C04 +:101A000003F0B7FC2C6707F10800BDE8F08100BFC8 +:101A100000000000040000000858000010B5204C31 +:101A20004521204802F05AF9A36A990136D51E488B +:101A3000452102F053F91E20A36ADA0104D51B48A0 +:101A4000452102F04BF91F20154CA36A1B0304D556 +:101A50001748452102F042F92120A36A590304D511 +:101A60001448452102F03AF922200D4CA36A9A034A +:101A700004D51148452102F031F92320A36ADB0384 +:101A800004D50E48452102F029F92420044A936A1E +:101A90006FEA03436FEA1343936210BD1D20CBE747 +:101AA00000ED00E0F465000011660000296600000A +:101AB000486600006B66000095660000B466000092 +:101AC00070B5244C06460D462348452102F006F920 +:101AD000A36AD9043BD52148452102F0FFF817201D +:101AE000A36A1A0504D51E48452102F0F7F818200C +:101AF000184CA36A9B0511D545211A4802F0EEF84F +:101B0000A26BA36A190408D54521174802F0E6F82C +:101B10001EB1A36A23F40043A36219200D4CA36AEB +:101B20005A0504D51148452102F0D8F81A20A36AB5 +:101B3000DB0504D50E48452102F0D0F81B20054AEC +:101B4000936A43F47F43936200232B7070BD162089 +:101B5000C6E700BF00ED00E0E4660000FF6600009D +:101B6000156700002D6700004B67000065670000E7 +:101B70008567000070B5224C06460D462148452178 +:101B800002F0ACF8A36AD90637D51F48452102F008 +:101B9000A5F81120A36A1A0704D51C48452102F0B4 +:101BA0009DF81220164CA36A9B0711D545211848B1 +:101BB00002F094F8626BA36A190608D5452115480E +:101BC00002F08CF81EB1A36A23F08003A3621320F5 +:101BD0000B4CA36ADA0704D50F48452102F07EF8C2 +:101BE0001420A36A064ADB0658BFA36A936A43F02F +:101BF000FF03936200232B7070BD1020CAE700BF63 +:101C000000ED00E0A2670000BD670000156700005E +:101C1000F5670000126800002D6800002DE9F04112 +:101C2000614B04465F6800258AB0C7F3080685F358 +:101C30001188BFF36F8F02F07F43B3F17F4F07D15D +:101C400002F00C03082B14D14521584802F046F845 +:101C500000252C464FF00008F31E8DF80780092B55 +:101C600000F29180DFE803F00A8488808F8F8F8FE5 +:101C70008F8C10074CBF0C460125EBE745214C48E3 +:101C8000494E02F02BF88DF80780F36A9A0705D5C4 +:101C90004521484802F022F800232DE0F36A002B8A +:101CA00002DA45214448F5E7F36A5B00F4D54521A3 +:101CB000424802F013F87369A26943F480737361B8 +:101CC000BFF34F8FBFF36F8F32F8023C726922F47B +:101CD00080727261BFF34F8FBFF36F8F03F47F4247 +:101CE000B2F55F4F28D1DBB2022B25D14521226806 +:101CF000334801F0F3FF23689DF80720CAB902AE0C +:101D000004F12007324620686168083403C2BC42EF +:101D10001646F7D1099A002D42D0C2F3080121B925 +:101D20006FEA52226FEA42220992184602A9FFF78F +:101D30000FFE0AB0BDE8F0811B4B9A6AD2B22AB1FD +:101D400001200DF10701FFF715FF0FE09A6A12F469 +:101D50007F4F05D001200DF10701FFF7B1FE05E02F +:101D60009B6AB3F5803F97D3FFF758FE0346C3E75E +:101D700000200DF10701E6E700200DF10701ECE777 +:101D80004521104886E7104917F4F87F0F4A10489C +:101D900018BF0A46A6F11003452101F09FFF7BE71B +:101DA0006FF30802C0E700BF00ED00E07F680000AD +:101DB000AF680000CB680000F16800000469000013 +:101DC0002869000049690000666800005168000049 +:101DD00072690000044B5A6942F010025A615A6954 +:101DE00022F008025A61704700ED00E0EFF308802E +:101DF000EFF3098101B57246FFF710FF01BD00BF87 +:101E00000A4880F30888202080F3118808484FF49E +:101E10008051401880F30988EFF3148002210843B1 +:101E200080F31488BFF36F8F02F07FF9A04F00207A +:101E3000A0160020BFF34F8F0549064BCA6802F475 +:101E4000E0621343CB60BFF34F8F00BFFDE700BFDD +:101E500000ED00E00400FA05002318460649D1F819 +:101E60009020C2F30722934200DB7047C1F89830FC +:101E7000C1F8A0000133F6E700ED00E01EF0040F0A +:101E80000CBFEFF30880EFF30980816911F8021CA1 +:101E90000229FFD001B5724602F03FF901BD00BF33 +:101EA00040B2002807DB01234109034A00F01F006C +:101EB000834042F82130704700E100E040B2002842 +:101EC00001F10101ACBF00F16040064B4FEA411146 +:101ED000C9B2ABBF00F5614000F00F0080F80013FD +:101EE0001954704714ED00E0054B064A23F04043B7 +:101EF00023F07F039360BFF34F8FBFF36F8F704763 +:101F00000000000000ED00E042F8203C009B0B497F +:101F100042F81C3C019B21F0010142F8183C029B55 +:101F200042F8081C42F8143C4FF0807342F8043C1D +:101F30000023203A02654367704700BF4503000055 +:101F400000B50B4B15469860026F0A4B0E461A609F +:101F50002C4686F309880020034B98472046002131 +:101F600000220023014C20474741000045030000A8 +:101F7000BC100020C80700201022014B1A617047D6 +:101F800000ED00E0054B5A699B689A421FBF044A66 +:101F9000536843F080535360704700BFBC1000206B +:101FA00000ED00E0084B9B6883420BD1EFF3058303 +:101FB00043B1064B5A6842F080525A605A6A22F482 +:101FC00000425A6203F0E0B8BC10002000ED00E0CF +:101FD00011498A684FF030001044EFF3098C80E813 +:101FE000F01F202080F31288BFF36F8F0B4F4FF04C +:101FF00000664A698A603E60106F094C2060506F2D +:102000000023536780F3118802F1300090E8F01F3D +:102010008CF3098870470000BC10002004ED00E03C +:10202000C8070020002320210348C2180133202BB9 +:1020300082F80013F9D1704700E100E008B5EFF332 +:102040000583064A103B02EBC30152F8330049688E +:102050008847BDE80840FFF795BF00BFF455000072 +:102060000148006870470000C80700200121024BAA +:10207000024A034800F09EB800000420000000203F +:102080006459000007B502460C48C0F898200B6858 +:1020900023F01F03134343F01003C0F89C308B68F8 +:1020A00043F00103C0F8A0308B68054800930B682B +:1020B000442101F013FE03B05DF804FB00ED00E0E5 +:1020C0008E69000038B50E4B0D46D3F890300446AB +:1020D000C3F30723013B9842024607D9452109482B +:1020E00001F0FCFD6FF01504204638BD4421064880 +:1020F00001F0F4FD29462046FFF7C4FFF4E700BFD6 +:1021000000ED00E0A6690000D16900002DE9FF4163 +:102110000F46984605460026BE420EDA6B685BB352 +:10212000B8F1000F12D0591E0B420AD03246452199 +:10213000134801F0D3FD6FF01502104604B0BDE85E +:10214000F0811F2BF2D92B681942EFD1D4B222466D +:1021500044210C4801F0C2FD2B6801A90193D5E987 +:10216000010302F004F8034320460393FFF7AAFF9C +:1021700010F1160FDFD0421C01360C35CCE700BF42 +:10218000F7690000226A00000522044BC3F894207E +:10219000BFF34F8FBFF36F8F704700BF00ED00E0BC +:1021A000BFF35F8F0022024BC3F89420704700BF3B +:1021B00000ED00E010B5034C01232278FFF7A6FFE5 +:1021C000207010BD971600202DE9F0435A4A5B4E4F +:1021D000D2F890303568C3F307239D4285B000F2F2 +:1021E000A880D2F890204421C2F30722544801F07D +:1021F00075FD0024FFF7D4FF0C27A54219D1514FDC +:1022000068463D70FEF756F84FF0000881464E4C88 +:102210004E4D4F4EC14514D100203B784649D1F870 +:102220009020C2F3072293427DDBFFF7ADFF002031 +:1022300045E07168204607FB0411FFF723FF0134D6 +:10224000DBE700984FEA081C00EB0811CB6823403D +:10225000B3F5000F49D00BD8B3F5001F32D0B3F55A +:10226000800F37D0B3F5801F14D008F10108D1E7F3 +:10227000B3F1007F42D0B3F1805F48D0B3F1807FEB +:10228000F3D150F80C30886801F071FF4A6840F0D3 +:10229000887009E050F80C30886801F068FF4A68DF +:1022A00040F0885040F43020039001A93878CDE9FF +:1022B0000123FFF707FF002831DA6FF0150005B0A2 +:1022C000BDE8F08350F80C30886801F050FF4A6890 +:1022D0003043E9E750F80C30886801F048FF40F0DF +:1022E00000704A6840F40030DEE750F80C3088682F +:1022F00001F03DFF4A6840F08270D5E750F80C309D +:10230000886801F034FF4A6840F48020CCE750F838 +:102310000C30886801F02BFF4A682843C4E73B78FB +:1023200001333B70A1E7C1F89830C1F8A000013338 +:1023300075E74FF0FF30C2E700ED00E07059000094 +:102340004A6A0000971600200000F0FF000002110A +:102350000000081108B5024B1B689847002008BD13 +:10236000CC070020034B044A1860937843F0020323 +:1023700093707047CC0700201400002008B5054872 +:1023800001F09EFC002383F31188BFF36F8F0423B9 +:10239000184602DF756A000070B54568066928684E +:1023A00002F0CBFE38B94521124801F097FC6FF0DE +:1023B0001204204670BD286883681B689847041E75 +:1023C00005DA224645210C4801F088FCF1E7D5E901 +:1023D00001231A44A24207D923464521074801F0A8 +:1023E0007DFC6FF01504E4E7301D02F0C4FE00240C +:1023F000DFE700BF7E6A00009E6A0000C56A000039 +:1024000013B504460B4801F0FCFE012802D010F180 +:10241000860F0CD10123002106480DF1070201F0BF +:1024200001FF20B99DF807301B1B5842584102B0EC +:1024300010BD00BFBC550000014801F052BF00BFF5 +:10244000BC55000008B5074802F077FE38B10648D1 +:10245000FFF788FF0448FDF7F9FE002008BD6FF084 +:102460001200FBE7685500006D2400000A2838B50B +:102470000446074D04D1AB680D2128465B68984798 +:10248000AB6803485B68E1B29847204638BD00BF9F +:102490006855000038B50546002910461C462A69D3 +:1024A00014DB6B685B698B4210D95B1A9C420DD8B8 +:1024B000084D6B6A01336B6213682246194402F0BF +:1024C00031FF0020AB692344AB6138BD6FF01500CC +:1024D000FBE700BF2408002040F2092213B50F4B90 +:1024E00004460421019300920D4B0E4801F00AFCB2 +:1024F00003220D4B0092019304210C4B0C4801F078 +:1025000001FC23691A7932B162681868516852690E +:10251000497902F02EFF002002B010BD2E6B0000A2 +:10252000BC960000240800203E6B0000AA96000024 +:102530000008002000292DE9F8438046174646DBB5 +:10254000D0F80490D9F814308B4240D95B1A9A42E3 +:102550003DD8D9F81030B1FBF3F203FB1212002A78 +:1025600035D1B7FBF3F603FB167686BB194C1A4A36 +:10257000636BD2690133636322B1934202D30020BB +:10258000BDE8F883D9F81030B1FBF3F505F10F037E +:1025900004EB8304D9F81030B7FBF3F3B342EED960 +:1025A0007019FF2898BF236806F101069CBF01330C +:1025B0002360D8F8043004341A695968D8F8103008 +:1025C00049791B6802FB003002F0D3FEE2E76FF0AE +:1025D0001500D5E724080020000800202DE9F74F5A +:1025E0000D1E91461F46D0F810A06BDBD0F804807A +:1025F000D8F81430AB4265D95B1B9F4262D8D8F83B +:1026000004301B68B5FBF3F203FB1252002A59D1C8 +:10261000B7FBF3F403FB1474002C53D12B4EA346E9 +:10262000F36A0133F362D8F80430D8F800001A686E +:10263000597902F09EFEBB4510D32548836933B11A +:10264000F26A934208D322D1036A2BB10123BC4220 +:102650001FD1F3692344F361002013E0D8F804305C +:102660000BEB05011A68DAF80030D8F800001944BD +:10267000019202F086FE019A38B16FF00400336ACD +:102680000133336203B0BDE8F08F9344D3E70023F6 +:10269000DDE713B1026AA242DED9D8F80420DAF8E5 +:1026A00000E004EB050C527919F804101EF80CB088 +:1026B000FF2A0CBF01EA0B0141EA0B010EF80C10D6 +:1026C0000134C4E76FF01500DCE700BF24080020E8 +:1026D0000008002070B50F4D00EB8104A04201D12D +:1026E000002070BD4378017813F0010FC1F301138E +:1026F0000CBF4FF400324FF48032061D01F00F0181 +:1027000055F8230001F01CFF10F1860FE9D0304688 +:10271000E4E700BF9C5A0000054B1B7833B180688A +:102720004FF0FF324FF0FF3300F0BCBA704700BFEC +:102730009C160020034B1B7813B1806800F060BB2F +:10274000704700BF9C1600204FF0E0230D4A9969A6 +:10275000126818699B69002908BF1146002B08BF41 +:10276000134610F4803F084801D1994205D2016810 +:10277000114401604FF0E021096900681044C01A5B +:10278000704700BFB8100020A810002020220020B1 +:10279000074B83F82320074B074A1A60074B013A7F +:1027A00018604FF0E0235A61072298611A61704760 +:1027B00000ED00E0B810002090D00300A810002029 +:1027C000684620F007018D4631B5EFF311852023CF +:1027D00083F31288BFF36F8FFFF7B6FF0D4B0E4ADE +:1027E000186811680D4C0844106000221A602368B4 +:1027F0000B49C01AB0FBF1F001FB00332360094B19 +:1028000029461A6001F042F8FFF7BCFBBDE83140F1 +:1028100085467047A8100020B4100020B01000209A +:1028200090D00300AC1000202DE9F04180462E4FDF +:1028300069B1B0F1FF3F0AD14FF0E022136923F0F4 +:10284000010313614FF07F433B60BDE8F081FFF768 +:102850007BFF4FF0E0230022244C99692368B8F1F4 +:10286000FF3F00EB0306224B3D681A601FD0214B4F +:102870001868301A34D4204BDFF880E01B684FEA28 +:10288000E87C13EB0803A3FB0E324CF1000C1B1A7F +:1028900043F60A500EFB0C2262F10002834272F1F1 +:1028A00000001DDBB3F1807F72F1000201DB6FF0ED +:1028B0007F434FF0E0203B60013B8269436100238E +:1028C00083614FF000700E4B914258603BBF481936 +:1028D000801A891A80192ABF891920602160B4E7FB +:1028E00043F60953E5E700BFB8100020B4100020FC +:1028F000A8100020B0100020AC10002090D00300E1 +:1029000000ED00E010B5074B1C68074B1B68E41A8C +:10291000FFF71AFF054B2044B0FBF3F0044B18609F +:1029200010BD00BFB4100020B010002090D00300F4 +:10293000AC10002070B516461D465A1C03680446AC +:102940001344C2689A4205D20821006A02F012FBC1 +:10295000002070BD65B93278204602F00EFB0028D9 +:10296000F6D03544B5420CD1A3680133A360F0E73B +:10297000AB1E062B8EBF0023054AD35C1833DAB298 +:10298000EAE723685A1C226015F8012D1A70E9E75E +:10299000F2A2000010B504464521034801F09EF95B +:1029A000204602F0D5FB00BF10940000F7B50446A6 +:1029B0000D46EFF31187202383F31288BFF36F8F47 +:1029C0001A4A0428966898BF194B127C94BF53F892 +:1029D0002030184B009245210246174801F07EF93D +:1029E0003DB1EB69C3F308031BB14521134801F066 +:1029F00075F936B1304602F0C5FB034608B10278DE +:102A000002B90F4B324645210E4801F067F92946BD +:102A10002046FFF7BFFF87F31188BFF36F8F304663 +:102A200003B0BDE8F040FFF7BDBA00BFBC10002006 +:102A3000005B0000249400003A94000067940000BA +:102A4000329400008D94000038B50A4B53F82040B2 +:102A5000013053F82050A54200D838BD606830B12D +:102A6000037EDB0701D402F050FB0834F3E7236850 +:102A70009847FAE7145B0000012270B5284B86B036 +:102A800003201A70FFF7E0FF0420FFF7DDFF254C5D +:102A9000254D2646AE4204F130040FD300F04CFD24 +:102AA000204CAC4226D300F05BFDFDF739FB1F4AFA +:102AB000938923F00103938106B070BD54F80C3C58 +:102AC000059354F8103C049354F8143C039354F8C1 +:102AD000183C029354F81C3C019354F8203C00939A +:102AE00054E90A2354E90C0100F0F4F954F8303C9D +:102AF0005E65CEE7D4E90A23B3F1FF3F08BFB2F128 +:102B0000FF3F05D052EA0301206803D100F040FAEC +:102B10003034C6E70649183000F0C8FDF8E700BFBA +:102B20009C160020F4560000F456000060010020BE +:102B3000895200000023012270B586B0CDE904233C +:102B40000F220193CDE9023214230F4D0F4E03FBE8 +:102B500000550F4906EBC016044601EB00214FF467 +:102B6000807230460B4B009500F0B4F9337C2C7426 +:102B700023F004033374084B013403EB0433EE6099 +:102B80006B6006B070BD00BFBC100020E0000020EC +:102B9000A026002061510000A01600207FB5002073 +:102BA000FFF752FF264B83F30888264C0025636904 +:102BB00043F400736361E02384F82230E5772576DF +:102BC0006576A576636A43F4E0236362FFF702F952 +:102BD000FFF7D2F94FF0FF33A362E362FFF7F4FA95 +:102BE000FFF744FA184800F0C7F90120FFF72CFF5F +:102BF0000220164CFFF728FF00F096FC144B4FF410 +:102C000020525C61134B1449059301232046CDE902 +:102C10000353CDE90155114B009500F05BF90646D1 +:102C2000237C204623F00403237402F006FB28468D +:102C3000FFF780FF31462046084AFFF781F900BFC1 +:102C4000A026002000ED00E0E0010020600100204F +:102C5000BC100020F4940000A0270020792A000076 +:102C600037B58268054692F90E300C468B4213D078 +:102C7000117C0B4811F01F0FCDE900434FF04401C8 +:102C800014BF6E23792301F029F82146A86803B008 +:102C9000BDE8304000F09CBB002003B030BD00BF59 +:102CA000FC9400002DE9F743044690461E46EFF3DE +:102CB0001189202383F31288BFF36F8F484FC168B7 +:102CC000BA6871B1836893421FD058EA06011ED1D9 +:102CD00089F31188BFF36F8F6FF00F0003B0BDE869 +:102CE000F08392F90E000131C4E902212061CDE99F +:102CF000001023464421BA683A4800F0EFFF89F3F8 +:102D00001188BFF36F8F0020E8E70069EBE792F9C5 +:102D10000E5093F90E3002469D42A8BF1D46442135 +:102D2000314800F0DBFFA36893F90E30AB424EDD73 +:102D300029462046FFF794FF054622464946CDE93D +:102D400000862A4800F018FB064603462246442126 +:102D5000274800F0C3FF002E0CBF6E237923009399 +:102D600044212346BA68234800F0B8FF002ECAD099 +:102D700023464421BA68204800F0B0FFEFF31187E2 +:102D8000202383F31288BFF36F8FA3680BB32368EC +:102D900026699C420AD04BB193F90E309E42A8BFDF +:102DA0001E466FF07F039E42B8BF1E464421134863 +:102DB000224600F093FF31462046FFF751FF40B115 +:102DC00039460A4802F075FA6FF00A0086E70025D6 +:102DD000B3E7002DF4D187F31188BFF36F8FF3E7CA +:102DE000BC10002032950000629500009D16002066 +:102DF00085950000AA950000C9950000E5950000A2 +:102E000073B583680546002B53D02D4A92689342D0 +:102E100052D1C368024644212A4800F05FFFEB68A4 +:102E2000012B04D9013BEB60002002B070BDEFF331 +:102E30001186202383F31288BFF36F8F28462969F8 +:102E4000FFF70EFF2C68A54217D100241E4BAC6083 +:102E500000932A46234644211C4800F03FFF14B348 +:102E600094F90E3020462B610023A36702F0F4F999 +:102E70003146174802F01DFAD6E7002CE5D0D4E918 +:102E8000003213605A600023227CC4E9003322F030 +:102E90000202A360227404F1180000F09FFCAC60F1 +:102EA00094F90E30D4E7EC6086F31188BFF36F8F8E +:102EB000BAE76FF01500B8E74FF0FF30B5E700BF95 +:102EC000BC1000200A96000018FCFFFF27960000A7 +:102ED0009D1600202DE9FF47994600F15803C0E9EF +:102EE0001633109B4FF000088381042303740F9B5B +:102EF0000F4604468373C0E90688C0F8088080F84E +:102F00000F8000210020073222F0070607EB060A97 +:102F1000C4E90A0123463A4644211548CDE9026A2C +:102F2000CDE9006700F0DAFE51462046FEF756FD77 +:102F30000E9BC51D25F00705A566C4E9187602930A +:102F40000D9BAAEB050501930C9B2A46009339467D +:102F50004B462046FEF7D8FF064BC4F854809B68CA +:102F600003B1DB6E2846E36604B0BDE8F08700BF1E +:102F700051960000BC1000200123037483810023BC +:102F8000C0E91833C366014B98607047BC1000203D +:102F900038B50446EFF31185202383F31288BFF37D +:102FA0006F8F037C5B070FD5183000F017FC237C74 +:102FB000204623F00403237402F04EF92946BDE8AD +:102FC0003840044802F075B985F31188BFF36F8F5C +:102FD00038BD00BF9D1600206FF00A01084A9368B3 +:102FE0009967084958674B6843F080534B6000234A +:102FF00083F31188BFF36F8F9368986F704700BF9A +:10300000BC10002000ED00E038B590F9102001461A +:10301000002A037C04DA03F07F03037402F0D5F87E +:103020000D4D2A4652F8184FAB68944200D004B9AF +:10303000EC688B4207D01A7CD20604D1DA897F2A49 +:1030400001D9A2692AB1A34202D0204600F0CEFAEB +:1030500023466B6138BD00BFBC10002070B590F9ED +:103060001020037C002A2FDBD9062DD11A4C63F0E7 +:103070007F032246037452F8183FE169934207D157 +:10308000C0E900210860E0610FE09942F8D01B68B8 +:10309000002BF5D093F90E6090F90E50AE42F4DD9E +:1030A0005968C0E9003108605860A569954200D0B0 +:1030B00005B9E568A3681A7CD20606D1DA897F2AA9 +:1030C00003D9AA690AB9636170BDAB4202D0284630 +:1030D00000F08CFA6561F7E7BC100020034648B9A0 +:1030E000EFF3058232B9064A51699268914201D0E4 +:1030F000FFF772BF83F31188BFF36F8F704700BF74 +:10310000BC10002038B5184CA168E0690B688142FA +:1031100014BF1A46002249680B605960A368E16930 +:103120002AB9124AC3E900210B60E3610AE092F96F +:103130000E5093F90E00854212DD5168C3E900215B +:103140000B605360A569094B9D4200D005B9E56845 +:10315000A3689D4202D0284600F048FA656138BD58 +:103160008A42DED01268DBE7BC100020D4100020B9 +:10317000002A2DE9F8430CBF4FF010084FF0080863 +:10318000027C044618EA020F0D4664D148EA0203A5 +:10319000D2090CD10374B8F1080F7DD1A36813B123 +:1031A000204602F01AF8202704F118060FE003F079 +:1031B0007F03037402F009F8EDE785F31188BFF38C +:1031C0006F8FEFF3118587F31288BFF36F8F30464F +:1031D00000F004FB0B30F0D0A66D04F15807B742A5 +:1031E00013D04FF0000986B1304601F0F6FFC6F863 +:1031F000789006F1180000F0F1FA0B3002D030465A +:10320000FFF72CFFA66DB742EDD1274B9B689C4280 +:1032100042D1EFF30587003F18BF0127DFF8889000 +:103220004B4653F8186F9E4200D00EB9D9F80C6087 +:10323000D9F80830B34202D0304600F0D7F9B8F1DF +:10324000100FC9F8146006D0204600F079FF17B1BE +:103250001648FFF791FE144B9B68A3421ED1EFF373 +:103260000583DBB9A289D20711D585F31188BFF395 +:103270006F8F83F31188BFF36F8F0423184602DF2B +:10328000EFF31185202383F31288BFF36F8F284655 +:10329000BDE8F843FFF7A0BE0027BFE785F311881C +:1032A000BFF36F8FBDE8F883BC100020E001002061 +:1032B00070B50F4D06462B4653F8184F9C4200D070 +:1032C00004B9EC68AB681A7CD20604D1DA897F2A8B +:1032D00001D9A2692AB1A34202D0204600F086F9A2 +:1032E00023466B613046BDE87040FFF7F7BE00BF74 +:1032F000BC10002070B5EFF31186202383F31288F1 +:10330000BFF36F8F1A4CA168E0690B68814214BF4C +:103310001A46002249680B605960A368E1692AB91E +:10332000144AC3E900210B60E3610AE092F90E50F0 +:1033300093F90E00854216DD5168C3E900210B6048 +:103340005360A5690B4B9D4200D005B9E568A368A1 +:103350009D4202D0284600F049F965613046BDE83B +:103360007040FFF739BE8A42DAD01268D7E700BF53 +:10337000BC100020D4100020F8B5124B0C46DDE93B +:10338000067611469868104A1060EFF311822022E9 +:1033900082F31288BFF36F8F9D68284601F027FFE4 +:1033A000B6F1FF3F08BFB7F1FF3F06D03A463346BC +:1033B000064905F1180000F079F92046BDE8F8400B +:1033C000FFF70ABEBC100020DC100020895200006C +:1033D000F8B50446EFF31187202383F31288BFF377 +:1033E0006F8F037C49B203F01F02002A0CBF012635 +:1033F000002635D103F07F032A4D037401F0E5FE6A +:103400002A46037C817363F07F03037452F8183FEC +:10341000E869934207D1C4E900200460EC610DE043 +:103420009842F8D01B68002BF5D093F90EC08C455C +:10343000F6DD5968C4E900310C605C60AC69944207 +:1034400000D004B9EC68AB689C4202D0204600F082 +:10345000CDF86C6187F31188BFF36F8F3046F8BDEC +:103460009B071CD5856801F0B0FE81732B689D42D7 +:1034700009D16B68C4E900531C606C60EAE76A68B4 +:103480009A42F6D01B68002BF3D093F90E208A42A3 +:10349000F5DD5A68C4E9003214605C60DAE78173D4 +:1034A000D8E700BFBC100020F8B550EA010305467C +:1034B0000C4603D101F087FE0020F8BDEFF3118721 +:1034C000202383F31288BFF36F8F134E134BB06822 +:1034D000186001F0C3FEB0682A4623461049183030 +:1034E00000F0E4F8B36804461A7C5F6742F0040217 +:1034F0001A746FF00A029A670A4A536843F08053BD +:103500005360002383F31188BFF36F8F01F004FF32 +:10351000201A20EAE070D0E7BC100020DC10002068 +:103520008952000000ED00E0024B03F11802C3E9EC +:1035300006227047BC100020EFF31181202383F393 +:103540001288BFF36F8F054B9A68D37B013BD3730F +:1035500081F31188BFF36F8F704700BFBC1000204C +:10356000EFF31180202383F31288BFF36F8F034B97 +:103570009A68D37B0133D373FFF79ABEBC10002047 +:10358000014B9868704700BFBC100020027C0346C6 +:1035900012F01F0210D10A4988420DD0094908686B +:1035A00068B1D9897F2909D893F90E20064B1B6889 +:1035B0009A42B8BF002070470020704710467047FD +:1035C000E000002098000020E01000200122044BC1 +:1035D000C01A044BC0105843034B1A54704700BF25 +:1035E00060020020ABAAAAAA9D160020F8B50C4BD9 +:1035F0000C4D1E7CFFF7CAFF1823044603FB06553B +:10360000284600F0EBF8084F34B1BB5D2846E21ABB +:103610000649D31700F04AF80023BB55F8BD00BF98 +:10362000BC100020600200209D160020CD35000057 +:1036300070B5EFF31186202383F31288BFF36F8FE9 +:103640000F4D104BAC681868A04202D1FFF7CEFFB7 +:1036500011E000221A602B7C0B4AD35C5BB1204640 +:10366000FFF794FF38B1237CDB0604D1FFF74AFD56 +:103670006869A042EAD086F31188BFF36F8F70BDEE +:10368000BC100020DC1000209D160020024B1868A2 +:10369000984208BF00207047A0000020024B186825 +:1036A00008B1FFF72FB970479C000020B3F1FF3F2E +:1036B00008BFB2F1FF3F2DE9F84F04469946154681 +:1036C0001F4600F081808160EFF31188202383F38F +:1036D0001288BFF36F8FB9F1000FDFF8F4A025DB7C +:1036E000FFF7DCFF3B4B06461B68003B18BF01237E +:1036F000451949EBE0795B1949F100024FF00109E6 +:10370000DAE90057C4E904325D1942EB0707FFF715 +:10371000BDFF0346DFF8C0E0DEF804A0EBB9C4E962 +:1037200000EACAF80040CEF8044028E06FF0010338 +:10373000DAE900125B1A4FF0FF3161EB02025B1B0A +:1037400062EB0902012B72F10001BCBF01230022D0 +:103750004FF00009C0E90432D9E7D3E9041CD4E9E9 +:1037600004208A4270EB0C0B25DA891A5A686CEB3C +:103770000000C3E90410C4E9003214605C60FFF784 +:1037800085FF84420FD1134B1B6801330BD1B9F174 +:10379000000F02D1FFF782FF0646304601F0A5FD7B +:1037A0000021FFF741F888F31188BFF36F8F284697 +:1037B0003946BDE8F88F521A60EB0C005345C4E956 +:1037C0000420ACD01B68A9E700252F46EFE700BF17 +:1037D000780200209C000020A0000020F8B50446DC +:1037E000EFF31186202383F31288BFF36F8F0268F3 +:1037F00072B3FFF74BFF184B5B689C4208D0D2E9CD +:103800000431D4E90475DB1941EB0501C2E9043147 +:10381000D4E900320025A04213605A60C4E9005583 +:103820000ED000200D4A136823F001018C4204BF22 +:1038300043F00103136086F31188BFF36F8FF8BD67 +:10384000FFF72CFF01F051FD2946FEF7EDFFE8E7F9 +:103850006FF01500E6E700BFA0000020E410002094 +:10386000EFF31182202383F31288BFF36F8F064B8F +:1038700040F001001B681B1A5842584182F311881E +:10388000BFF36F8F704700BFE410002000232DE9C5 +:10389000F047DFF8BC902F4CC9F8000023600E46BB +:1038A000FFF7F4FE2C4FDFF8B480D9F80050D7E9C9 +:1038B00000CE4FEAE57A50B1D0E904319D427AEB6F +:1038C00001021EDA5B1B61EB0A01C0E9043115EB52 +:1038D0000C054EEB0A02C7E9005200254FF0FF33FA +:1038E00028462360C9F8005001F0FFFC2946FEF786 +:1038F0009BFF86F31188BFF36F8FBDE8F047FFF79A +:1039000097BE13EB0C0CA5EB03034FF0000541EB46 +:103910000E018268C7E900C1C9F80030C8F800008C +:10392000D0E900310B605960C0E9005586F3118879 +:10393000BFF36F8F9047EFF31186202383F3128834 +:10394000BFF36F8FC8F80050FFF7A0FEADE700BFD0 +:10395000E81000209C00002078020020E4100020E5 +:1039600010B5EFF31184202383F31288BFF36F8F18 +:10397000FFF794FE0346054AD2E90001181841EB0F +:10398000E37184F31188BFF36F8F10BD78020020BC +:103990000CB430B58BB004460D462022002102A89D +:1039A00001F0E7FC02238DF80A300D4B002D039344 +:1039B000069412DB01D06B1E1C440FAA0E9902A8BC +:1039C0000794019200F00EF815B10022069B1A70C0 +:1039D0000BB0BDE8304002B070470024EDE700BFF7 +:1039E000D55300002DE9F04F837815469A07074616 +:1039F000D0F8048085B040F19F8000260878002828 +:103A000000F09C80252808D001F1010A39460136D2 +:103A1000C047002880F286808AE091F801B001F169 +:103A2000020ABBF1250FF1D0002401211F2C25D85B +:103A3000ABF12002102A06D8844B01FA02F018429A +:103A40000ED1032A5AD0ABF13002092A08D9BBF1B2 +:103A50002A0F33D1630605F1040501D444F0200494 +:103A60001AF801BBBBF1000FE0D139462520C04751 +:103A700000285DDB394658460236C9E77F2CE2D97B +:103A8000BBF16C0F29D021D8BBF1680F2CD0BBF152 +:103A90006A0F30D0BBF14C0F2DD0ABF16302122A6C +:103AA00000F2A580DFE802F02C4EA3A3A3A34EA34F +:103AB000A3A3A3A3AD9DA3A331A37700BBF12E0FB6 +:103AC000DED160063AD444F04004C9E7BBF1740F7C +:103AD000C6D0BBF17A0FC3D0DFE7220648BF44F45B +:103AE000007444F08004BBE7E30548BF44F400746D +:103AF00044F48074B4E744F42074B1E71024AFE7D1 +:103B0000394615F8040B013682E72C68504B002C1F +:103B100008BF1C46A1464B4619F8010B20B9341BBF +:103B20001E190435514669E73946C0470028F2DAC4 +:103B3000BB7843F00403BB704FF0FF36304605B04E +:103B4000BDE8F08F20061DD5A10543BF073525F040 +:103B5000070555F8080B55F8040B00280DF104096A +:103B60004946B8BF40424FF00A02B8BF44F48064EF +:103B700001F017FC6405A0EB090956D44C460DF181 +:103B8000040B5EE0E20555F8040BE6D5A3054CBF37 +:103B900040B200B2E1E70A2224F01004A4B22006E9 +:103BA00033D5A10543BF073525F0070555F8080BA8 +:103BB00055F8040B10B924F01004A4B20DF1040957 +:103BC000494601F0EEFBE306A0EB0909D6D53946DC +:103BD0003020C0470028ABDBBBF1000F1ED10136FF +:103BE000CCE710224FF0780B44F01004D7E74BF0ED +:103BF0002002782A7FF439AFCBF1780242F010022C +:103C0000CDE708224FF0000BC9E7E30555F8040B98 +:103C1000D0D5A1054CBFC0B280B2CBE739465846DB +:103C20000236C0470028A9DA82E739462D2001363E +:103C3000F7E7013C39461BF80400C0470028FFF6AF +:103C400077AF002CF5D14E446CE700BF812801000E +:103C5000A3960000704710B50120FEF7D1FB0128A4 +:103C6000044603D1FEF7E8FB204610BD0020FCE728 +:103C70000020704730B500290446154685B011DB99 +:103C800083688B420ED96368C068194401AA00F0AA +:103C900085FB28B96268019B9B1A2B60029B6B60B5 +:103CA00005B030BD6FF02100FAE7704708B501F0AC +:103CB00037FB0A23584308BD704770470020704700 +:103CC0000FB407B504A951F8040B0191FCF7C4FA2D +:103CD00003B05DF804EB04B0704770470FB407B54C +:103CE00004A951F8040B0191FCF7B6FA03B05DF892 +:103CF00004EB04B070470379C28800215A4318309E +:103D000001F037BB10B50446C360BDF80830C2806F +:103D100003610171FFF7EFFF21460398FCF7D0FA2A +:103D2000002818BF6FF0770010BD002908DB8068FD +:103D3000884205D9401A904234BF002001207047C4 +:103D40000020704770B516461A4605460C46FFF728 +:103D5000ECFF48B16968E86821448268146832461B +:103D6000A446BDE8704060476FF0150070BD70B5A7 +:103D700016461A4605460C46FFF7D7FF48B1696854 +:103D8000E8682144826854683246A446BDE8704021 +:103D900060476FF0150070BD10B50B460446FFF785 +:103DA000C4FF40B16168E068194483689B682BB127 +:103DB000BDE8104018476FF0150010BD6FF05700B8 +:103DC000FBE708B5C0688368DB689847006808BDF2 +:103DD00008B5C0688368DB689847407908BD48B17A +:103DE00003683BB143682BB1C068884294BF002090 +:103DF000012070474FF0FF30704701F0C2BA08460B +:103E000000F0DDBD01292DE9F341174601D900F08D +:103E1000BEF92C2303FB0104D4F82080B8F1000F75 +:103E2000F5D0E368268940461E44042331460DEB55 +:103E30000302FFF787FF054620B10125284602B09F +:103E4000BDE8F08146F60813BDF8042064899A4263 +:103E50001AD1BDF806309C4201D00325EEE70423B9 +:103E600040460DEB0302A119FFF76CFF0028E4D1D7 +:103E700046F60713BDF804209A42EED1BDF80610AD +:103E8000214431443960D9E7002CF1D0E5E770478F +:103E9000002382681946FCF7F9BC08B52C2303FB04 +:103EA0000101086A08B900F072F90422BDE808406F +:103EB00000F08BBDF8B513460F46164600210246AA +:103EC000054600F02CF8044650B933460121284637 +:103ED00005F12C0200F023F810B1002F18BF0446A2 +:103EE0002046F8BD002110B504460846FCF76EF9DF +:103EF00004F12001C0B2FCF7FFF940B90121FCF741 +:103F000065F904F14C01C0B2FCF7F6F908B100F014 +:103F10003EF910BD70477022002101F02ABA08B5A1 +:103F20002C2303FB0100006A08B900F030F92023BC +:103F30000021FFF707FF003818BF012008BDF8B5C2 +:103F40000C4610B1F9B10AB90120F8BD00278D184F +:103F500000F12806AC42F7D0836E5A1C826614F832 +:103F6000011B03443F2A83F82810F3D93146FCF79C +:103F700053FFD0E9083213F5007342F10002C0E9A3 +:103F800008328766E6E70846DFE7F8B50C460546DF +:103F900000284BD000294AD08B6ED1E90821D800E7 +:103FA000121841F10001C4E908218022581C382868 +:103FB0002344A0664FF0000783F8282004F1280668 +:103FC0000BD9C0F140023946304400F032F82046A7 +:103FD0003146FCF721FF3846A766C0F138020021C0 +:103FE000304400F026F8236A626A1BBA12BA3146DE +:103FF000C4E918232046FCF70FFF2B1D211F243591 +:1040000051F8042F0433100E03F8080C100C03F8B9 +:10401000070C100A03F8060C03F8052CAB42EFD18D +:1040200020467022002100F004F80120F8BD084667 +:10403000FCE701F09EB900230B60436813B9C0E9A7 +:104040000011704719604160704770B506460D4613 +:104050000024AC4200DB70BD305DFDF751F801304B +:10406000F9D00134F5E72DE9F04F85B005460E464D +:1040700090461F4600F0B0FE20B96FF04C0005B02E +:10408000BDE8F08F4FF01409002334464FF0010AC9 +:1040900009FB08693B60284602A900F091FE60B167 +:1040A000DDE902324FF0000B0093C3450CD1002133 +:1040B000284600F0D1FE0028EDD1284600F0B5FEDC +:1040C0000028DAD00020DAE7A14598BF34466168BD +:1040D0008A4214D121680098019201F052F9019AA4 +:1040E00068B9237C7BB9D4E902312846984768B186 +:1040F00084F810A03B68143401333B60CBE71434E0 +:104100000BF1010BD1E76FF06F00B8E76FF0220001 +:10411000B5E701F02EB901F005B901460068FDF7D9 +:1041200017BC00210120FDF713BC08B5FDF7DCFE2C +:10413000FDF7E6FBFDF7F0FBFDF774FFFEF72EFD44 +:104140006FF08500704761B662B680F31188BFF3E7 +:104150006F8F704772B6002383F31188BFF36F8FA0 +:10416000BFF34F8F30BF62B6BFF36F8F7047202809 +:1041700009D9B0F1004F08D80138B0FA80F0C0F189 +:104180001F0040007047082070473E20704708B568 +:10419000FEF7F4F808B5FEF7DDF8002008BD2DE9BC +:1041A000F04106460D4617461C46ABB1D0F80880D4 +:1041B000D8F800309847002D11DB84420FD8031B3C +:1041C000AB420CD3D8F808E023463A46294630469D +:1041D000F446BDE8F04160471846BDE8F0816FF055 +:1041E0001500FAE74FF0FF324FF0FF330430FEF7CF +:1041F00059BD0430FEF704BE4368D3E90203C01A78 +:10420000704738B5456804460069FFF7EBFF2B8A15 +:104210002069002B0CBF6FF085050125FFF7E9FF32 +:10422000284638BD2DE9F8430D1E064690461C462B +:10423000D0F804902DDBEA18D9E902315B1A9A42D2 +:1042400027D80069FFF7CEFFD9E9007299F811303D +:10425000B4B1D7F8089015441D443846D9F8003059 +:104260009847002D12DB844210D8031B9D420DD8C5 +:104270002346424629463846D9F80490C8470446A2 +:104280003069FFF7B6FF2046BDE8F8836FF01504EC +:10429000F6E76FF01504F6E72DE9F0410C464668A5 +:1042A0000546006990461F46FFF79CFF002C15DB72 +:1042B000D6E90231E2195B1A9A420FD8D6E9000317 +:1042C000E118737C19443B464246FFF768FF0446F9 +:1042D0002869FFF78EFF2046BDE8F0816FF01504D6 +:1042E000F6E7F0B50024056985B010220021476883 +:1042F0000646684601F03DF82846FFF773FF2C702C +:104300002546BB68A34205D83069FFF772FF2846EF +:1043100005B0F0BDD7E9000121441B1B102B28BFBD +:1043200010236A46FFF73BFF051EEDDBBB681B1B36 +:10433000102B94BFE4181034E3E7F7B51C460023B4 +:10434000164682682360A3600D465369694601AA38 +:104350009847019B5A1E01921BB96FF0150003B0DC +:10436000F0BD0098A26847682168676085B9B31AF4 +:10437000D0F800C0634528BF634603FB07111A4409 +:104380002160A26002689A4206D808300090E0E7F7 +:104390006B1AB3FBF7F3EBE70020E0E713460022CC +:1043A000FFF7CBBF43689B680B6001231360704726 +:1043B000436800205B69C1E9003070474368586872 +:1043C0007047436800205B681B680B607047436858 +:1043D0005B68586842400A4042405A60002070477B +:1043E000436800205A6853680B4353607047436822 +:1043F00000205A68536823EA0103536070474368FA +:1044000000205A6853684B405360704730B5B3F191 +:10441000C06F44681CD0B2F5800F19D00120B2F5EE +:10442000001F656800FA01F102D16962002030BD09 +:10443000B2F1A07F0CBFA962E9626268B3F1806F3C +:104440000CBF116351636368996363681962EDE798 +:104450006FF08500EBE730B50369586800B30024BE +:10446000884219D108688CB99C685860A14200D173 +:104470009860002008602AB15A680A609A685960FA +:1044800002B9996000200FE02846E9E720609868AB +:10449000814208BF9C60ECE705680446002DF3D11B +:1044A000002AE9D16FF0150030BD08B543689B685C +:1044B0009847002008BD08B5062000220321FDF71B +:1044C000FDFCBDE808400620FDF7EABC08B5072062 +:1044D00000220321FDF7F2FCBDE808400720FDF7AC +:1044E000DFBC08B5102000220321FDF7E7FCBDE882 +:1044F00008401020FDF7D4BC08B51120002203218C +:10450000FDF7DCFCBDE808401120FDF7C9BC70B523 +:10451000436802695B6805469E6B9E63516809B1FA +:104520000C6801B970BD8A68324002D028464B68D9 +:1045300098471CB1236821461C46F2E72346FAE758 +:1045400038B512F4403F0C46456816D012F0320FD1 +:1045500013D193030ED5130307D5FFF741FF6B6803 +:104560001C6100206B68DC6138BD5303F7D5FFF791 +:104570003EFFF4E76B685961F3E76FF08500F3E7FE +:10458000012303FA01F1FFF7DBBF30B503695C6873 +:10459000012303FA01F1236819422BD022F470237E +:1045A00023F001031BB9237A23B1930317D56FF0CE +:1045B000850015E0D503FAD4900310D56068EFF3B9 +:1045C0001185202383F31288BFF36F8F130308D55F +:1045D00003681943016085F31188BFF36F8F0020D2 +:1045E00030BD5303F7D52368026823EA0103134063 +:1045F0000360F0E76FF01500F2E7036900205B68E5 +:104600005A681B68126813400B60704710B5036945 +:10461000586809C80140EFF31184202080F3128804 +:10462000BFF36F8F186842400A4042401A6084F31B +:104630001188BFF36F8F002010BD03695B685A6853 +:104640001B681940EFF31180202383F31288BFF316 +:104650006F8F13680B43136080F31188BFF36F8F64 +:104660000020704703695B685A681B681940EFF3C4 +:104670001180202383F31288BFF36F8F136823EA1E +:104680000103136080F31188BFF36F8F0020704720 +:1046900003695B685A681B681940EFF31180202397 +:1046A00083F31288BFF36F8F13684B40136080F35E +:1046B0001188BFF36F8F002070476FF0850070473F +:1046C0000369426800205A60704730B50368136080 +:1046D0000579046804EBC504A34202D36FF001001E +:1046E00030BD5C7908338C42F1D10020F8E7436893 +:1046F000586870472DE9F0411F460E46154604469E +:10470000D0F804804046FEF707F8D8F800103A4683 +:104710003144284600F006FE6068FEF70BF80020E2 +:10472000BDE8F0812DE9F0411F460D4616460446CE +:10473000D0F804804046FDF7EFFFD8F800003A4675 +:104740003146284400F0EEFD6068FDF7F3FF0020DD +:10475000BDE8F08138B5044645682846FDF7DCFF22 +:1047600000216A68286800F004FE6068FDF7E2FF37 +:10477000002038BD43681B685A68920743BF1B6816 +:1047800000200B704FF0FF30704743681B685A6879 +:10479000D207FCD419607047034610465AB15B68D3 +:1047A0001A685068C00705D40120D0601B680A78D9 +:1047B0001A60704700207047034610465AB15B6884 +:1047C0001A68506810F0020005D00220D060012065 +:1047D0001B681B680B7070474268EFF31180202341 +:1047E00083F31288BFF36F8F11688B6823F0040383 +:1047F0008B6013680122DA6080F31188BFF36F8F3A +:10480000704743681B685A68D2075ABF9868C0F35C +:104810008000002070474268EFF31180202383F36B +:104820001288BFF36F8F11688B6823F008038B60C9 +:1048300013680222DA6080F31188BFF36F8F70472C +:10484000FFF7DFBF43681B68586810F002001CBF09 +:104850009868C0F3C0007047704708B50246FFF77C +:10486000F1FF20B9BDE808401046FFF7CABF08BDF8 +:104870000369C3E901127047026953680BB191687B +:104880001847704710B54268EFF31184202383F373 +:104890001288BFF36F8F11688B6843F008038B6039 +:1048A00013685B689B0701D5FFF7E6FF84F3118867 +:1048B000BFF36F8F10BD10B54268EFF31184202352 +:1048C00083F31288BFF36F8F11688B6843F0040382 +:1048D0008B6013685B68DB0701D4FFF7CDFF84F3BF +:1048E0001188BFF36F8F10BD08B50022032101208E +:1048F000FDF7E4FA0120FDF7D3FA00220321104668 +:10490000FDF7DCFABDE808400020FDF7C9BA032135 +:1049100008B508460022FDF7D1FA0320FDF7C0FADA +:10492000022000220321FDF7C9FABDE80840022059 +:10493000FDF7B6BA08B5002203210520FDF7BEFA3F +:104940000520FDF7ADFA042000220321FDF7B6FA99 +:10495000BDE808400420FDF7A3BA37B54568044612 +:104960000021A86801AAFFF7B0FE002812DB019B16 +:10497000002219791868FDF7ADFE00280ADB2369CB +:104980001A685AB903222B6820469A60EB68984748 +:10499000002001E0831CF2D003B030BD61684B6899 +:1049A000002BEFD0B3FBF2F309680B61EAE7704725 +:1049B0004FF0E022136923F0010313617047806810 +:1049C000183820F007001038704738B515460C46E7 +:1049D00061B15AB1FFF7FCF92146254411F8013BBA +:1049E000834203D1A942F9D1012038BD0020FCE760 +:1049F00030B5026A0346D2E9014084424FF000001C +:104A000002D30123D36030BD1874506824250130CF +:104A10005060186A4268541E0268184605FB04225A +:104A20005C1950F8045BA04242F8045BF9D1012004 +:104A30009960E8E7F0B5064604468BB001AD0F4635 +:104A400094460FCE0FC50FCE0FC5216A33684A6852 +:104A50002B6022B90223CB6000200BB0F0BDFB0716 +:104A60002068A56813D524260B68013A06FB02339B +:104A70007E0703D41A7C0AB10F23ECE7224603F128 +:104A8000240153F8046B8B4242F8046BF9D1B90747 +:104A900041BF226A536803F1FF335360AC4505D22E +:104AA000236A002BD8D00422DA60D5E77A0748BF02 +:104AB00020603B0701D40120CFE7143406AB93E814 +:104AC000070084E80700F6E710B502601A44029B6D +:104AD000012983604FF00003C26003740375836192 +:104AE00001D8036210BD24224A43243A8418046288 +:104AF0008350026A8C1E9460026A02295360026A23 +:104B0000D360026A1374026A53741EBF036A2430AE +:104B10001860E7E7182871F100030ED3B0F5807F25 +:104B200071F100030BD3B0F5803F71F1000308D39E +:104B3000002914BF0920052070470120704702207A +:104B400070470320704737B50024002508290A461E +:104B5000CDE900450AD80146684600F0E3FBDDE9EF +:104B6000000103B0BDE83040FFF7D4BF002003B020 +:104B700030BD00B1C1607047436803608368013392 +:104B80008360006AFFF7F5BF08B50268C3689A4200 +:104B900005D3006A0821FFF7ECFF002008BD0120C3 +:104BA000FCE738B504460D46FFF7EEFF40B1236839 +:104BB0001B78B5EB531F04D00A21206AFFF7D9FFF9 +:104BC000002038BD10B50446FFF7DEFF38B123687A +:104BD0001A78FF2A05D00A21206AFFF7CAFF0020B1 +:104BE00010BD01332360FBE710B5027D044632B1EE +:104BF000FFF7E8FF48B100234FF0FF32237520464E +:104C0000BDE810400721FFF715BF10BD2DE9F84F93 +:104C100004460E4691461D46FFF7B6FF804628B172 +:104C2000A36843B90321206AFFF7A3FF4FF00008F0 +:104C30004046BDE8F88F2268177807F01F0BBBF1DC +:104C40001F0F12D1FDB1206A18B1037C0BB11521E1 +:104C5000EAE701232B7000252368013563602B44AC +:104C60002360A368013BA360E2E7BBF1170F0CD9F7 +:104C7000ABF11803D9B2032905D801259D40A945F8 +:104C800004D20521CFE70721CDE70025E36805F130 +:104C9000010A5244934201D20821C4E74A46002146 +:104CA000304600F066FB15B986F800B0D3E72268FD +:104CB000711E531913F80109934201F8010FF9D13C +:104CC000236A002BC8D01B7C002BC5D00737FFB24E +:104CD000022FC1D949463046FFF735FF8245BBD088 +:104CE0001521A0E738B50C4611460546FFF759FFD8 +:104CF00008B9002038BD042200232846A118FFF778 +:104D000085FF0028F5D02B682360F3E7002337B533 +:104D100004468DF80330FFF744FFA8B10422204673 +:104D20000DF103030DEB0201FFF770FF60B19DF879 +:104D3000035065B901992046FFF75AFE50B96368E0 +:104D40002360A3680133A360002003B030BD6FF07F +:104D50000F01F0E72575F8E738B504460D46FFF773 +:104D6000C1FF48B12268E3689B1A6A689A4204D975 +:104D700008212046FFF700FF002038BD70B50D4622 +:104D8000002104461646FFF70CFF38B1324629468B +:104D90002046BDE870400023FFF738BF70BD0422F5 +:104DA000FFF7ECBFFFF7FBBF38B5022204460D4604 +:104DB000FFF7D2FF18B123686A681344236038BD37 +:104DC00038B5032204460D46FFF7C6FF18B1236825 +:104DD0006A681344236038BD10B505210446FFF707 +:104DE00095FF50B1237D4BB96FF00042A368934209 +:104DF00005D305212046FFF7BFFE002010BD5B0054 +:104E0000A360FBE7037D23B98068B0FA80F0400916 +:104E100070470368C268934205D21878A0F1FF0377 +:104E200058425841704700207047FFF7DDBE38B543 +:104E30000D4606210446FFF7B4FE08B9002038BD30 +:104E40000023042229462046FFF7E0FE0028F5D083 +:104E5000A3680133A360F2E7F0B58FB00446FFF713 +:104E600093FE00285DD0236800221D780023CDE941 +:104E7000022323466D0905AA04F120071646186887 +:104E80005968083303C6BB423246F7D11868306010 +:104E9000062D1CD02A1F0023012A4FF008028DF88E +:104EA00004300DEB020198BF01AB05A8FFF7AEFE81 +:104EB0000646002835D0042D3BD019D8023D012DDF +:104EC00021D9059B2360A368013BA3602AE001A9C7 +:104ED00005A8FFF7ACFF20B3059B089A934204D3C3 +:104EE0000821206AFFF745FE1BE01D786D09CFE71A +:104EF000052DE6D1DDE90232B3F1004F72F1000178 +:104F000013D32946EDE7E3682168029A5B1A9A42B7 +:104F100003D8059B13440593D3E708212046FFF7E8 +:104F20002BFE002630460FB0F0BDDB185241CDE914 +:104F300002329DF8045025B16FF00F020023CDE935 +:104F40000223029B8DF82850079305A8FFF75AFF0C +:104F5000014638B1002DB4D005A8FFF733FE002874 +:104F6000AFD1DEE705A8FFF777FF0028EDD1D8E73E +:104F7000FFF7AABD00B1C160704710B50368C468EF +:104F8000A34205D3006A0821FFF7F4FF002010BDFB +:104F900002F01F0242EA41111970036801330360F5 +:104FA0000120F4E770B505460E4610461946144632 +:104FB000FFF7C9FD22463146431E2846BDE8704032 +:104FC000FDF7B8BCF8B51746C368026804469A42B4 +:104FD0000D4606D30821206AFFF7CCFF0026304695 +:104FE000F8BD9B1A4A689A42F4D80E4656F8043B1C +:104FF00053B104213046FFF7A6FD6A6823681344C5 +:10500000E26803449A42E5D33246042339462046F7 +:10501000FFF7C8FF06460028E0D0206829688842CC +:1050200002D06A6800F08CF923686A681344236030 +:10503000D5E7082A73B513460C4606D9006A052140 +:10504000FFF798FF002002B070BD8E1816F9012CF2 +:10505000002A0FDA0A466C466946B24204D10121A1 +:105060002246FFF79FFFEEE712F8015BED4301F8E0 +:10507000015BF2E70021F3E713460A460021FFF740 +:1050800091BF07B5042201910DEB0201FFF7D1FF9B +:1050900003B05DF804FB07B5042201910DEB02019A +:1050A000FFF7EAFF03B05DF804FB0222FFF78ABFB7 +:1050B0000322FFF787BF07B5CDE900126946FFF766 +:1050C000F4FF03B05DF804FB07B5CDE900126946B3 +:1050D000FFF7EEFF03B05DF804FB1F220421FFF78A +:1050E0004CBF1F220521FFF748BF1F220721FFF7F2 +:1050F00044BFFFF7FABF1FB50024CDE90144069C69 +:105100000094FFF7E1FC04B010BD10B543690446FC +:105110003BB90020E2684042537843F001035370EA +:1051200010BD98470028F4D00028B8BF4042FF289F +:10513000A8BFFF20E3681870ECE740B1C368587857 +:1051400010F001001EBF1878B0FA80F040097047D7 +:10515000EFF31183202383F31288BFF36F8FFEE7F1 +:1051600010B52024EFF3118384F31288BFF36F8FFF +:10517000FEF7F0FFF6E703460020C3E90033C3E97A +:10518000020070470020704738B58589EFF3118120 +:10519000202282F31288BFF36F8F037C13F0080480 +:1051A00004D081F31188BFF36F8F38BD0122FDF762 +:1051B000DFFFEB07F9D584F31188BFF36F8F04236A +:1051C000184602DFF1E7FEF795B8D0E90032136028 +:1051D0005A600023C0E90033704708B5FFF7F5FFB8 +:1051E000037C23F0020303740023836008BD38B5F9 +:1051F00004460D46FDF708FF237C43F002032374A9 +:10520000D5B1A5602B689D4209D16B68C4E90053F4 +:105210001C606C6010E06A689A42F6D01B68002B34 +:10522000F3D093F90E1094F90E209142F3DD5A68F1 +:10523000C4E9003214605C6038BD10B5EFF311842E +:10524000202383F31288BFF36F8FFDF707FF84F3EA +:105250001188BFF36F8F10BDFDF700BFFDF7D4BEFF +:1052600008B5037C014613F0280F0CD183680BB1FD +:10527000FFF7B3FF0B7C084623F004030B74BDE873 +:105280000840FDF7EBBE08BD38B50446EFF31185C5 +:10529000202383F31288BFF36F8FFEF7E1FA18B96A +:1052A000A4F11800FFF7DCFF85F31188BFF36F8FBF +:1052B00038BD0846FDF712BF38B505460C46FEF767 +:1052C000F3F8B4F1FF3F08BFB5F1FF3F0AD00A235E +:1052D000A0FB0303B0F1004F73F1000301D36FF0A3 +:1052E000004038BD4FF0FF30FBE708B50246FEF73F +:1052F000CDF970B1D0E904319B1A61EBE272B3F1E0 +:10530000004F72F1000104DA002AACBF18460020F9 +:1053100008BD6FF00040FBE708B5FEF721FB08BDB4 +:10532000FEF71EBB0A44914200F1FF3300D17047E3 +:1053300010B511F8014B914203F8014FF9D110BD9E +:10534000884210B501EB020402D98442234607D8F3 +:10535000431EA14207D011F8012B03F8012FF8E7F3 +:105360000244824200D110BD13F8011D02F8011D54 +:10537000F7E703460244934200D1704703F8011B4C +:10538000F9E710B501390244904201D1002005E04F +:10539000037811F8014FA34201D0181B10BD013052 +:1053A000F2E7F0B504460846C2F13705EDB202F067 +:1053B0001F02B4FBF2F6274602FB1641CBB20929C5 +:1053C00084BF5B19DBB23033BA42344600F8013B8C +:1053D000EFD9F0BDD1E9043293421EBF5A1C0A61D5 +:0453E000187070478A +:1053E40000000000DC54000000000000C054000075 +:1053F40000000000A45400000000000088540000D5 +:10540400000000006C54000000000000145500006F +:10541400000000003055000000000000F8540000B7 +:1054240000000000845500000000000068550000E2 +:10543400000000004C55000045240000000000005E +:105444008D2700000000000000000000A0550000AF +:1054540000000000D855000000000000BC5500000A +:0854640031020000000000000D +:10546C004B930000E85900000C570000B2000020DC +:10547C0060100020AB4400000000000059930000B5 +:10548C000C5A00000C570000B40000206C100020D7 +:10549C00AB4400000000000067930000305A00008D +:1054AC000C570000B600002078100020AB44000020 +:1054BC000000000075930000545A00000C570000C7 +:1054CC00B800002084100020AB4400000000000055 +:1054DC00C2930000AC5A000054570000C0000020DA +:1054EC00000000000000000000000000839300009A +:1054FC00785A000030570000BA00002090100020AD +:10550C00C14600000000000098930000845A00007F +:10551C0030570000BC00002098100020C14600004D +:10552C0000000000AD930000905A000030570000BE +:10553C00BE000020A0100020C146000000000000AA +:10554C00E6930000B85A000064570000C200002027 +:10555C002C0000205B49000000000000F4930000C8 +:10556C00D05A000064570000C400002050000020F6 +:10557C005B4900000000000002940000E85A0000A3 +:10558C0064570000C6000020740000205B49000036 +:10559C0000000000536B0000C0590000F4560000DE +:1055AC00B000002024000020D924000000000000DE +:1055BC000A6B00009059000000000000AC000020B5 +:1055CC00D00700209923000000000000186B000099 +:1055DC00A859000000000000AE000020E8070020E1 +:0855EC009923000000000000FB +:1055F4008455000079480000845500007948000073 +:10560400685500007948000068550000794800009A +:105614004C550000794800004C55000079480000C2 +:10562400C05400000F450000A45400000F450000C2 +:10563400000000002341000000000000234100009E +:10564400000000002341000000000000234100008E +:10565400000000002341000000000000234100007E +:10566400000000002341000000000000234100006E +:10567400885400000F4500006C5400000F450000E2 +:10568400000000002341000000000000234100004E +:10569400000000002341000000000000234100003E +:1056A400000000002341000000000000234100002E +:1056B400000000002341000000000000234100001E +:1056C400000000002341000000000000234100000E +:1056D40000000000234100000000000023410000FE +:1056E40000000000234100000000000023410000EE +:1056F40095240000DD25000035250000BD43000091 +:10570400B1430000A543000081450000C3430000ED +:10571400CF430000E1430000EF430000FF430000DB +:105724000D44000057440000000000008B450000B9 +:10573400FB4500000D4600003B46000065460000A6 +:1057440091460000BB46000000000000000000007D +:10575400EF460000F54600002547000055470000CD +:10576400754700008B4700000000000000000000A7 +:105774000000000099470000B9470000B748000046 +:10578400D94700000348000085480000174800007E +:10579400414800004548000059480000AF49000056 +:0C57A4005B48000000000000714800009D +:1057B000C45D000004000000215D00000400000042 +:1057C000665D000004000000E55C000004000000CD +:1057D0008A69000004000000F99400000400000041 +:1057E000ED5C000004000000CE9300000400000007 +:1057F000246B000004000000896400000400000025 +:085800005B5D000004000000E4 +:105808000204000000000000191100004B400000D5 +:105818000100000002000000040000000000000079 +:105828000000000000000100A05500000100000079 +:105838000000010000000800A05500000200000060 +:105848000000090000000800A05500000300000047 +:105858000000110000000400A0550000982F8A42A3 +:1058680091443771CFFBC0B5A5DBB5E95BC25639AA +:10587800F111F159A4823F92D55E1CAB98AA07D8C2 +:10588800015B8312BE853124C37D0C55745DBE72E5 +:10589800FEB1DE80A706DC9B74F19BC1C1699BE465 +:1058A8008647BEEFC69DC10FCCA10C246F2CE92DF5 +:1058B800AA84744ADCA9B05CDA88F97652513E9819 +:1058C8006DC631A8C82703B0C77F59BFF30BE0C620 +:1058D8004791A7D55163CA0667292914850AB727AE +:1058E80038211B2EFC6D2C4D130D385354730A654B +:1058F800BB0A6A762EC9C281852C7292A1E8BFA222 +:105908004B661AA8708B4BC2A3516CC719E892D189 +:10591800240699D685350EF470A06A1016C1A4190C +:10592800086C371E4C774827B5BCB034B30C1C390B +:105938004AAAD84E4FCA9C5BF36F2E68EE828F74CA +:105948006F63A5781478C8840802C78CFAFFBE90E4 +:10595800EB6C50A4F7A3F9BEF27871C600000020E2 +:105968000000000000000B0602000000785900004B +:1059780000000000666A00002A0002020000002001 +:105988006E6A000022000B11DC54000000010000C8 +:1059980010000000000000000000000000000000EF +:1059A800DC540000000000000001000000000000BE +:1059B800000000000000000098160020E0590000D8 +:1059C800D85900000000000000100000000020006E +:1059D80000020000001000000400000000000000A9 +:1059E800FFFFFFFF00300140F94400000000000005 +:1059F80000300140000100000030014000020000BA +:105A080000300140FFFFFFFF00200140E344000099 +:105A180000000000002001400001000000200140BB +:105A28000002000000200140FFFFFFFF00100140BE +:105A3800CD440000000000000010014000010000FB +:105A4800001001400002000000100140FFFFFFFFAE +:105A580000000140B74400000000000000000140C1 +:105A680000010000000001400002000000000140A9 +:105A7800FF0300004C80024000000000030000000B +:105A8800088002400100000003000000008002407E +:105A980000000000C0540000A45400008854000016 +:105AA8006C54000000FC3F2000040000C8000020E7 +:105AB8000060004040787D01C85A00003549000068 +:105AC800D05A0000000000000050004040787D01DE +:105AD800E05A00000F490000E85A000000000000EA +:105AE8000040004040787D01F85A0000E948000075 +:105AF800005B000000000000AA940000B8940000B9 +:105B0800CC940000DB940000E7940000E45300000C +:105B1800E4530000445400004C5400006454000056 +:105B28006C54000001000200100011001200200057 +:105B3800210022002300240030003100320033000D +:105B4800FFFF25633A20456E7465722074686520EE +:105B580073657269616C207265636F76657279200E +:105B68006D6F64650A0025633A204572726F722072 +:105B7800696E697469616C697A696E6720626F6FB2 +:105B88007420636F6E736F6C652E207263203D20E6 +:105B980025640A0025633A20426F6F746C6F616454 +:105BA80065722073657269616C2070726F636573CA +:105BB8007320776173207465726D696E61746564B2 +:105BC80020756E65787065637465646C790A002564 +:105BD800633A205374617274696E6720626F6F74E0 +:105BE8006C6F616465720A0025633A204C656674BF +:105BF80020626F6F745F676F2077697468207375B0 +:105C08006363657373203D3D2025640A0025633A6C +:105C18002053746179696E6720696E2073657269B3 +:105C2800616C207265636F766572790A0025633A44 +:105C380020556E61626C6520746F2066696E642001 +:105C4800626F6F7461626C6520696D6167650A00D7 +:105C580025633A20426F6F746C6F616465722063CC +:105C68006861696E6C6F61642061646472657373E6 +:105C7800206F66667365743A20307825780A0025A7 +:105C8800633A20496D6167652076657273696F6E46 +:105C98003A207625642E25642E25640A0025633A69 +:105CA800204A756D70696E6720746F20746865206E +:105CB800666972737420696D61676520736C6F74AF +:105CC8000A0025633A204E657665722073686F7501 +:105CD8006C642067657420686572650A006D637579 +:105CE800626F6F74006F735F68656170002A2A2A9B +:105CF800205573696E67205A6570687972204F5312 +:105D0800206275696C642066333361613262633482 +:105D1800613433202A2A2A0A0063627072696E7419 +:105D2800665F7061636B616765004661696C656495 +:105D380020746F207265626F6F743A207370696E99 +:105D48006E696E6720656E646C6573736C792E2E50 +:105D58002E0A007379735F6765746F707400666CE0 +:105D68006173680025633A20536861726564206432 +:105D780061746120544C56206865616465722077AF +:105D880072697465206661696C65643A2025640AE5 +:105D98000025633A20536861726564206461746108 +:105DA80020544C56206461746120777269746520B0 +:105DB8006661696C65643A2025640A00626F6F74D5 +:105DC8006C6F616465725F696E666F0025633A2067 +:105DD800626F6F747574696C5F696D675F76616C0B +:105DE80069646174653A20666C61736820617265E4 +:105DF800612025700A0025633A20626F6F747574FC +:105E0800696C5F696D675F76616C69646174653A36 +:105E180020544C5620697465726174696F6E2066EF +:105E280061696C65642025640A0025633A20626F05 +:105E38006F747574696C5F696D675F76616C6964AE +:105E48006174653A20544C56206F66662025752C7F +:105E580020656E642025750A0025633A20626F6FFD +:105E6800747574696C5F696D675F76616C6964618C +:105E780074653A20544C56206265796F6E642069C7 +:105E88006D6167652073697A650A0025633A206247 +:105E98006F6F747574696C5F696D675F76616C6943 +:105EA800646174653A20544C56202564206E6F74E2 +:105EB800207065726D69747465640A0025633A2000 +:105EC800626F6F747574696C5F696D675F76616C1A +:105ED80069646174653A2045585045435445445FA8 +:105EE800484153485F544C56203D3D2025640A00E4 +:105EF80025633A20626F6F747574696C5F696D67AA +:105F08005F686173680A0025633A20626F6F747571 +:105F180074696C5F746C765F697465725F626567DB +:105F2800696E3A20747970652025642C2070726F30 +:105F380074203D3D2025640A0025633A20626F6F76 +:105F4800747574696C5F746C765F697465725F6E82 +:105F58006578743A20736561726368696E67206654 +:105F68006F722025642028256420697320616E796A +:105F780029207374617274696E67206174202575B5 +:105F880020656E64696E672061742025750A002596 +:105F9800633A20626F6F747574696C5F746C765FB6 +:105FA800697465725F6E6578743A2070726F746593 +:105FB8006374656420544C56202564206E6F7420E9 +:105FC800666F756E640A0025633A20626F6F747598 +:105FD80074696C5F746C765F697465725F6E6578FE +:105FE800743A20544C562068656164657220617467 +:105FF800202575206F76657272756E7320736563E0 +:1060080074696F6E20656E642025750A0025633AF1 +:1060180020626F6F747574696C5F746C765F6974F5 +:1060280065725F6E6578743A206D616C666F726D2B +:10603800656420544C56206174202575206F766560 +:106048007272756E732073656374696F6E20656E06 +:10605800642025750A0025633A20626F6F74757491 +:10606800696C5F746C765F697465725F6E6578746D +:106078003A20544C5620256420666F756E64206162 +:1060880074202575202873697A65202564290A00FB +:1060980025633A20626F6F747574696C5F746C76EF +:1060A8005F697465725F6E6578743A20544C562047 +:1060B8002564206E6F7420666F756E640A00256310 +:1060C8003A20626F6F745F65726173655F726567AE +:1060D800696F6E3A20666C6173685F6172656120F2 +:1060E80025702C206F66667365742025752C2073C7 +:1060F800697A652025752C206261636B776172640B +:1061080073203D3D20256868750A0025633A2062A2 +:106118006F6F745F65726173655F726567696F6ED3 +:106128003A206465766963652077697468206572CA +:106138006173650A0025633A20626F6F745F736349 +:1061480072616D626C655F726567696F6E3A202572 +:10615800702025752025752025640A0025633A20BE +:10616800626F6F745F76657273696F6E5F636D706F +:106178003A20766572312025752E25752E257520D5 +:10618800767320766572322025752E25752E257535 +:106198000A0025633A204661696C656420746F20A3 +:1061A800616464206461746120746F207368617233 +:1061B8006564206D656D6F727920617265612E0A64 +:1061C800007072696D617279007365636F6E6461E6 +:1061D80072790025633A204E6F20736C6F742074B7 +:1061E8006F206C6F616420666F7220696D616765EE +:1061F8002025640A0025633A20626F6F745F766118 +:106208006C69646174655F736C6F743A20736C6F4A +:10621800742025642C2065787065637465645F73E9 +:106228007761705F747970652025640A0025633A88 +:1062380020626F6F745F76616C69646174655F7307 +:106248006C6F743A206865616465722076616C6968 +:10625800646174696F6E206661696C656420256489 +:106268000A0025633A20496D61676520696E2074CC +:10627800686520257320736C6F74206973206E6FB6 +:10628800742076616C6964210A0025633A204661AE +:10629800696C65642072656164696E6720696D6107 +:1062A800676520686561646572732E0A0025633A24 +:1062B80020496D61676520256420257320736C6F04 +:1062C800743A20696D616765206E6F7420666F751A +:1062D8006E640A005072696D6172790025633A2014 +:1062E800252D397320736C6F743A20766572736943 +:1062F8006F6E3D25752E25752E25752B25750A0083 +:106308005365636F6E646172790025633A20496D45 +:10631800616765202564206C6F616465642066721E +:106328006F6D2074686520257320736C6F740A0084 +:1063380025633A20496D6167652025642052414DE7 +:10634800206C6F61642061646472657373203078B7 +:10635800257820697320696E76616C69642E0A005D +:1063680025633A204572726F72207768696C73747E +:1063780020636F7079696E6720696D616765202594 +:10638800642066726F6D20466C61736820746F209C +:106398005352414D3A2025640A0025633A20496D3D +:1063A8006167652025642052414D206C6F616469E6 +:1063B8006E6720746F2030782578206973206661B5 +:1063C800696C65642E0A0025633A20496D6167652A +:1063D8002025642052414D206C6F6164696E6720EE +:1063E800746F20307825782069732073756363652E +:1063F800656465642E0A0025633A2052656D6F76E0 +:10640800696E6720696D6167652025642066726F13 +:106418006D205352414D206174206164647265732C +:106428007320307825780A0025633A2052656D6F0D +:1064380076696E6720696D61676520256420736CD5 +:106448006F742025642066726F6D20666C617368B6 +:106458000A0025633A204E6F7420656E6F75676871 +:10646800206D656D6F727920746F2073746F72651B +:1064780020696E636F6D696E672064617461210ABB +:106488000073657269616C5F616461707465720044 +:1064980025633A2054580A00696D61676500646194 +:1064A8007461006F66660025633A205772697469E3 +:1064B8006E67206174203078257820756E74696C59 +:1064C80020307825780A0025633A2052583A20303F +:1064D8007825780A0072630025633A204661696C62 +:1064E800656420746F206F70656E20666C617368D8 +:1064F8002061726561733A2025640A00696D6167DD +:10650800657300736C6F74006861736800766572F8 +:1065180073696F6E002568752E2568752E25687558 +:10652800002E25750025633A2072302F61313A20FC +:1065380020307825303878202072312F61323A2087 +:1065480020307825303878202072322F61333A2075 +:10655800203078253038780A0025633A2072332FA6 +:1065680061343A2020307825303878207231322F43 +:1065780069703A2020307825303878207231342FED +:106588006C723A20203078253038780A0025633A32 +:106598002020787073723A20203078253038780AB5 +:1065A8000025633A204661756C74696E6720696ED0 +:1065B800737472756374696F6E2061646472657355 +:1065C8007320287231352F7063293A2030782530AE +:1065D80038780A0025633A20556E68616E646C65E8 +:1065E80064204952516E3A2025640A0025633A20F6 +:1065F8002A2A2A2A2A205553414745204641554CE4 +:1066080054202A2A2A2A2A0A0025633A20202044CC +:1066180069766973696F6E206279207A65726F0A8C +:106628000025633A202020556E616C69676E6564A9 +:10663800206D656D6F7279206163636573730A00FD +:1066480025633A2020204E6F20636F70726F636558 +:1066580073736F7220696E737472756374696F6E89 +:10666800730A0025633A202020496C6C6567616CC9 +:10667800206C6F6164206F66204558435F52455413 +:1066880055524E20696E746F2050430A0025633AB4 +:10669800202020496C6C6567616C20757365206FDC +:1066A800662074686520455053520A0025633A20D5 +:1066B8002020417474656D707420746F206578654E +:1066C8006375746520756E646566696E65642069B6 +:1066D8006E737472756374696F6E0A0025633A206D +:1066E8002A2A2A2A2A20425553204641554C54200A +:1066F8002A2A2A2A2A0A0025633A2020205374616C +:10670800636B696E67206572726F720A0025633A5F +:10671800202020556E737461636B696E6720657203 +:10672800726F720A0025633A2020205072656369EF +:106738007365206461746120627573206572726F7D +:10674800720A0025633A20202042464152204164C3 +:1067580064726573733A20307825780A0025633AA5 +:10676800202020496D7072656369736520646174C7 +:106778006120627573206572726F720A0025633A30 +:10678800202020496E737472756374696F6E20627D +:106798007573206572726F720A0025633A202A2A7F +:1067A8002A2A2A204D5055204641554C54202A2A41 +:1067B8002A2A2A0A0025633A202020537461636B31 +:1067C800696E67206572726F722028636F6E7465D8 +:1067D80078742061726561206D69676874206265EC +:1067E800206E6F742076616C6964290A0025633A0B +:1067F80020202044617461204163636573732056CF +:10680800696F6C6174696F6E0A0025633A202020F5 +:106818004D4D46415220416464726573733A20308D +:106828007825780A0025633A202020496E7374720F +:10683800756374696F6E204163636573732056696D +:106848006F6C6174696F6E0A005265736572766564 +:106858006420457863657074696F6E2028005370F2 +:106868007572696F757320696E746572727570746C +:106878002028495251200025633A20535053454C53 +:1068880020696E20746872656164206D6F6465208C +:10689800646F6573206E6F7420696E6469636174D8 +:1068A80065205053500A0025633A202A2A2A2A2AAA +:1068B8002048415244204641554C54202A2A2A2A2D +:1068C8002A0A0025633A20202042757320666175E4 +:1068D8006C74206F6E20766563746F7220746162C9 +:1068E8006C6520726561640A0025633A20202044A3 +:1068F80065627567206576656E740A0025633A20BF +:1069080020204661756C7420657363616C617469DD +:106918006F6E20287365652062656C6F77290A00A1 +:1069280025633A20415243485F4558434550542017 +:106938007769746820726561736F6E2025780A0A1A +:106948000025633A202A2A2A2A2A20446562756784 +:10695800206D6F6E69746F722065786365707469F5 +:106968006F6E202A2A2A2A2A0A0025633A202A2A10 +:106978002A2A2A20257320256429202A2A2A2A2A15 +:106988000A006D70750025633A205B25645D203030 +:106998007825303878203078253038780A00256313 +:1069A8003A204661696C656420746F20616C6C6F75 +:1069B80063617465206E6577204D50552072656758 +:1069C800696F6E2025750A0A0025633A2050726F98 +:1069D8006772616D204D505520726567696F6E2032 +:1069E800617420696E64657820307825780A0025FE +:1069F800633A20506172746974696F6E2025753A24 +:106A080020636F686572656E636520636865636B94 +:106A1800206661696C65642E0A0025633A20436F1D +:106A28006E666967757265204D5055207265676995 +:106A38006F6E20617420696E6465782030782578DF +:106A48000A0025633A20746F74616C207265676967 +:106A58006F6E20636F756E743A2025640A00464C89 +:106A68004153485F30005352414D5F300061626FBF +:106A7800727428290A0025633A20506172656E7481 +:106A880020646576696365206973206E6F7420726F +:106A9800656164790A0025633A20506172656E74F5 +:106AA80020696E697469616C69736174696F6E20BD +:106AB8006661696C7572653A2025640A0025633A37 +:106AC80020556E6465726C79696E672061726561C4 +:106AD8002073697A6520697320696E7375666669C3 +:106AE8006369656E742C2072657175697265733A95 +:106AF80020307825782C206861733A203078257802 +:106B08000A00626F6F745F6D6F64654031303000EA +:106B1800626F6F745F696E666F403000726574658E +:106B28006E74696F6E00666C6173685F73696D5F20 +:106B3800737461747300666C6173685F73696D5F09 +:106B48007468726573686F6C64730073696D5F66EF +:106B58006C6173685F636F6E74726F6C6C657200E2 +:106B68006D61785F77726974655F63616C6C7300DF +:106B78006D61785F65726173655F63616C6C7300EA +:106B88006D61785F6C656E0062797465735F7265BC +:106B980061640062797465735F7772697474656E95 +:106BA80000646F75626C655F7772697465730066FF +:106BB8006C6173685F726561645F63616C6C7300BC +:106BC800666C6173685F726561645F74696D655F47 +:106BD800757300666C6173685F77726974655F636B +:106BE800616C6C7300666C6173685F777269746559 +:106BF8005F74696D655F757300666C6173685F6566 +:106C0800726173655F63616C6C7300666C61736855 +:106C18005F65726173655F74696D655F7573006543 +:106C2800726173655F6379636C65735F756E6974B0 +:106C3800300065726173655F6379636C65735F7556 +:106C48006E6974310065726173655F6379636C6541 +:106C5800735F756E6974320065726173655F63791D +:106C6800636C65735F756E69743300657261736513 +:106C78005F6379636C65735F756E69743400657200 +:106C88006173655F6379636C65735F756E6974358D +:106C98000065726173655F6379636C65735F756EB8 +:106CA8006974360065726173655F6379636C6573D7 +:106CB8005F756E6974370065726173655F637963C8 +:106CC8006C65735F756E6974380065726173655FB2 +:106CD8006379636C65735F756E6974390065726199 +:106CE80073655F6379636C65735F756E6974313062 +:106CF8000065726173655F6379636C65735F756E58 +:106D0800697431310065726173655F6379636C65BD +:106D1800735F756E697431320065726173655F63A4 +:106D280079636C65735F756E697431330065726180 +:106D380073655F6379636C65735F756E697431340D +:106D48000065726173655F6379636C65735F756E07 +:106D5800697431350065726173655F6379636C6569 +:106D6800735F756E697431360065726173655F6350 +:106D780079636C65735F756E69743137006572612C +:106D880073655F6379636C65735F756E69743138B9 +:106D98000065726173655F6379636C65735F756EB7 +:106DA800697431390065726173655F6379636C6515 +:106DB800735F756E697432300065726173655F6305 +:106DC80079636C65735F756E6974323100657261E1 +:106DD80073655F6379636C65735F756E697432326E +:106DE8000065726173655F6379636C65735F756E67 +:106DF800697432330065726173655F6379636C65CA +:106E0800735F756E697432340065726173655F63B0 +:106E180079636C65735F756E69743235006572618C +:106E280073655F6379636C65735F756E6974323619 +:106E38000065726173655F6379636C65735F756E16 +:106E4800697432370065726173655F6379636C6575 +:106E5800735F756E697432380065726173655F635C +:106E680079636C65735F756E697432390065726138 +:106E780073655F6379636C65735F756E69743330CE +:106E88000065726173655F6379636C65735F756EC6 +:106E9800697433310065726173655F6379636C652A +:106EA800735F756E697433320065726173655F6311 +:106EB80079636C65735F756E6974333300657261ED +:106EC80073655F6379636C65735F756E697433347A +:106ED8000065726173655F6379636C65735F756E76 +:106EE800697433350065726173655F6379636C65D6 +:106EF800735F756E697433360065726173655F63BD +:106F080079636C65735F756E697433370065726198 +:106F180073655F6379636C65735F756E6974333825 +:106F28000065726173655F6379636C65735F756E25 +:106F3800697433390065726173655F6379636C6581 +:106F4800735F756E697434300065726173655F6371 +:106F580079636C65735F756E69743431006572614D +:106F680073655F6379636C65735F756E69743432DA +:106F78000065726173655F6379636C65735F756ED5 +:106F8800697434330065726173655F6379636C6536 +:106F9800735F756E697434340065726173655F631D +:106FA80079636C65735F756E6974343500657261F9 +:106FB80073655F6379636C65735F756E6974343686 +:106FC8000065726173655F6379636C65735F756E85 +:106FD800697434370065726173655F6379636C65E2 +:106FE800735F756E697434380065726173655F63C9 +:106FF80079636C65735F756E6974343900657261A5 +:1070080073655F6379636C65735F756E697435303A +:107018000065726173655F6379636C65735F756E34 +:10702800697435310065726173655F6379636C6596 +:10703800735F756E697435320065726173655F637D +:1070480079636C65735F756E697435330065726159 +:1070580073655F6379636C65735F756E69743534E6 +:107068000065726173655F6379636C65735F756EE4 +:10707800697435350065726173655F6379636C6542 +:10708800735F756E697435360065726173655F6329 +:1070980079636C65735F756E697435370065726105 +:1070A80073655F6379636C65735F756E6974353892 +:1070B8000065726173655F6379636C65735F756E94 +:1070C800697435390065726173655F6379636C65EE +:1070D800735F756E697436300065726173655F63DE +:1070E80079636C65735F756E6974363100657261BA +:1070F80073655F6379636C65735F756E6974363247 +:107108000065726173655F6379636C65735F756E43 +:10711800697436330065726173655F6379636C65A2 +:10712800735F756E697436340065726173655F6389 +:1071380079636C65735F756E697436350065726165 +:1071480073655F6379636C65735F756E69743636F2 +:107158000065726173655F6379636C65735F756EF3 +:10716800697436370065726173655F6379636C654E +:10717800735F756E697436380065726173655F6335 +:1071880079636C65735F756E697436390065726111 +:1071980073655F6379636C65735F756E69743730A7 +:1071A8000065726173655F6379636C65735F756EA3 +:1071B800697437310065726173655F6379636C6503 +:1071C800735F756E697437320065726173655F63EA +:1071D80079636C65735F756E6974373300657261C6 +:1071E80073655F6379636C65735F756E6974373453 +:1071F8000065726173655F6379636C65735F756E53 +:10720800697437350065726173655F6379636C65AE +:10721800735F756E697437360065726173655F6395 +:1072280079636C65735F756E697437370065726171 +:1072380073655F6379636C65735F756E69743738FE +:107248000065726173655F6379636C65735F756E02 +:10725800697437390065726173655F6379636C655A +:10726800735F756E697438300065726173655F634A +:1072780079636C65735F756E697438310065726126 +:1072880073655F6379636C65735F756E69743832B3 +:107298000065726173655F6379636C65735F756EB2 +:1072A800697438330065726173655F6379636C650F +:1072B800735F756E697438340065726173655F63F6 +:1072C80079636C65735F756E6974383500657261D2 +:1072D80073655F6379636C65735F756E697438365F +:1072E8000065726173655F6379636C65735F756E62 +:1072F800697438370065726173655F6379636C65BB +:10730800735F756E697438380065726173655F63A1 +:1073180079636C65735F756E69743839006572617D +:1073280073655F6379636C65735F756E6974393013 +:107338000065726173655F6379636C65735F756E11 +:10734800697439310065726173655F6379636C656F +:10735800735F756E697439320065726173655F6356 +:1073680079636C65735F756E697439330065726132 +:1073780073655F6379636C65735F756E69743934BF +:107388000065726173655F6379636C65735F756EC1 +:10739800697439350065726173655F6379636C651B +:1073A800735F756E697439360065726173655F6302 +:1073B80079636C65735F756E6974393700657261DE +:1073C80073655F6379636C65735F756E697439386B +:1073D8000065726173655F6379636C65735F756E71 +:1073E800697439390065726173655F6379636C65C7 +:1073F800735F756E69743130300065726173655FF3 +:107408006379636C65735F756E69743130310065DB +:10741800726173655F6379636C65735F756E6974B8 +:107428003130320065726173655F6379636C6573CF +:107438005F756E69743130330065726173655F63BF +:1074480079636C65735F756E697431303400657289 +:107458006173655F6379636C65735F756E697431B9 +:1074680030350065726173655F6379636C65735F5E +:10747800756E69743130360065726173655F637962 +:10748800636C65735F756E6974313037006572615E +:1074980073655F6379636C65735F756E69743130AA +:1074A800380065726173655F6379636C65735F75D6 +:1074B8006E69743130390065726173655F63796331 +:1074C8006C65735F756E6974313130006572617314 +:1074D800655F6379636C65735F756E6974313131AB +:1074E8000065726173655F6379636C65735F756E60 +:1074F80069743131320065726173655F6379636CF9 +:1075080065735F756E6974313133006572617365D7 +:107518005F6379636C65735F756E697431313400CC +:1075280065726173655F6379636C65735F756E69B6 +:10753800743131350065726173655F6379636C65B9 +:10754800735F756E69743131360065726173655F9A +:107558006379636C65735F756E6974313137006583 +:10756800726173655F6379636C65735F756E697467 +:107578003131380065726173655F6379636C657377 +:107588005F756E69743131390065726173655F6367 +:1075980079636C65735F756E69743132300065723A +:1075A8006173655F6379636C65735F756E69743168 +:1075B80032310065726173655F6379636C65735F0F +:1075C800756E69743132320065726173655F637913 +:1075D800636C65735F756E6974313233006572610F +:1075E80073655F6379636C65735F756E6974313257 +:1075F800340065726173655F6379636C65735F7589 +:107608006E69743132350065726173655F637963E1 +:107618006C65735F756E69743132360065726173BB +:10762800655F6379636C65735F756E697431323752 +:107638000065726173655F6379636C65735F756E0E +:1076480069743132380065726173655F6379636CA0 +:1076580065735F756E69743132390065726173657F +:107668005F6379636C65735F756E6974313330007D +:1076780065726173655F6379636C65735F756E6965 +:10768800743133310065726173655F6379636C656A +:10769800735F756E69743133320065726173655F4B +:1076A8006379636C65735F756E6974313333006534 +:1076B800726173655F6379636C65735F756E697416 +:1076C8003133340065726173655F6379636C657328 +:1076D8005F756E69743133350065726173655F6318 +:1076E80079636C65735F756E6974313336006572E2 +:1076F8006173655F6379636C65735F756E69743117 +:1077080033370065726173655F6379636C65735FB6 +:10771800756E69743133380065726173655F6379BA +:10772800636C65735F756E697431333900657261B6 +:1077380073655F6379636C65735F756E6974313403 +:10774800300065726173655F6379636C65735F753B +:107758006E69743134310065726173655F63796392 +:107768006C65735F756E697431343200657261736C +:10777800655F6379636C65735F756E697431343303 +:107788000065726173655F6379636C65735F756EBD +:1077980069743134340065726173655F6379636C51 +:1077A80065735F756E697431343500657261736530 +:1077B8005F6379636C65735F756E69743134360025 +:1077C80065726173655F6379636C65735F756E6914 +:1077D800743134370065726173655F6379636C6512 +:1077E800735F756E69743134380065726173655FF3 +:1077F8006379636C65735F756E69743134390065DC +:10780800726173655F6379636C65735F756E6974C4 +:107818003135300065726173655F6379636C6573D8 +:107828005F756E69743135310065726173655F63C8 +:1078380079636C65735F756E697431353200657292 +:107848006173655F6379636C65735F756E697431C5 +:1078580035330065726173655F6379636C65735F67 +:10786800756E69743135340065726173655F63796B +:10787800636C65735F756E69743135350065726167 +:1078880073655F6379636C65735F756E69743135B1 +:10789800360065726173655F6379636C65735F75E4 +:1078A8006E69743135370065726173655F6379633A +:1078B8006C65735F756E6974313538006572617314 +:1078C800655F6379636C65735F756E6974313539AB +:1078D8000065726173655F6379636C65735F756E6C +:1078E80069743136300065726173655F6379636C02 +:1078F80065735F756E6974313631006572617365E1 +:107908005F6379636C65735F756E697431363200D5 +:1079180065726173655F6379636C65735F756E69C2 +:10792800743136330065726173655F6379636C65C2 +:10793800735F756E69743136340065726173655FA3 +:107948006379636C65735F756E697431363500658C +:10795800726173655F6379636C65735F756E697473 +:107968003136360065726173655F6379636C657380 +:107978005F756E69743136370065726173655F6370 +:1079880079636C65735F756E69743136380065723A +:107998006173655F6379636C65735F756E69743174 +:1079A80036390065726173655F6379636C65735F0F +:1079B800756E69743137300065726173655F63791C +:1079C800636C65735F756E69743137310065726118 +:1079D80073655F6379636C65735F756E697431375E +:1079E800320065726173655F6379636C65735F7597 +:1079F8006E69743137330065726173655F637963EB +:107A08006C65735F756E69743137340065726173C4 +:107A1800655F6379636C65735F756E69743137355B +:107A28000065726173655F6379636C65735F756E1A +:107A380069743137360065726173655F6379636CA9 +:107A480065735F756E697431373700657261736588 +:107A58005F6379636C65735F756E6974313738007D +:107A680065726173655F6379636C65735F756E6971 +:107A7800743137390065726173655F6379636C656A +:107A8800735F756E69743138300065726173655F54 +:107A98006379636C65735F756E697431383100653D +:107AA800726173655F6379636C65735F756E697422 +:107AB8003138320065726173655F6379636C657331 +:107AC8005F756E69743138330065726173655F6321 +:107AD80079636C65735F756E6974313834006572EB +:107AE8006173655F6379636C65735F756E69743123 +:107AF80038350065726173655F6379636C65735FC0 +:107B0800756E69743138360065726173655F6379C3 +:107B1800636C65735F756E697431383700657261BF +:107B280073655F6379636C65735F756E697431380B +:107B3800380065726173655F6379636C65735F753F +:107B48006E69743138390065726173655F63796392 +:107B58006C65735F756E6974313930006572617375 +:107B6800655F6379636C65735F756E69743139310C +:107B78000065726173655F6379636C65735F756EC9 +:107B880069743139320065726173655F6379636C5A +:107B980065735F756E697431393300657261736539 +:107BA8005F6379636C65735F756E6974313934002E +:107BB80065726173655F6379636C65735F756E6920 +:107BC800743139350065726173655F6379636C651B +:107BD800735F756E69743139360065726173655FFC +:107BE8006379636C65735F756E69743139370065E5 +:107BF800726173655F6379636C65735F756E6974D1 +:107C08003139380065726173655F6379636C6573D8 +:107C18005F756E69743139390065726173655F63C8 +:107C280079636C65735F756E6974323030006572A4 +:107C38006173655F6379636C65735F756E697432D0 +:107C480030310065726173655F6379636C65735F7A +:107C5800756E69743230320065726173655F63797D +:107C6800636C65735F756E69743230330065726179 +:107C780073655F6379636C65735F756E69743230C1 +:107C8800340065726173655F6379636C65735F75F2 +:107C98006E69743230350065726173655F6379634C +:107CA8006C65735F756E6974323036006572617326 +:107CB800655F6379636C65735F756E6974323037BD +:107CC8000065726173655F6379636C65735F756E78 +:107CD80069743230380065726173655F6379636C0B +:107CE80065735F756E6974323039006572617365EA +:107CF8005F6379636C65735F756E697432313000E8 +:107D080065726173655F6379636C65735F756E69CE +:107D1800743231310065726173655F6379636C65D4 +:107D2800735F756E69743231320065726173655FB5 +:107D38006379636C65735F756E697432313300659E +:107D4800726173655F6379636C65735F756E69747F +:107D58003231340065726173655F6379636C657392 +:107D68005F756E69743231350065726173655F6382 +:107D780079636C65735F756E69743231360065724C +:107D88006173655F6379636C65735F756E6974327F +:107D980031370065726173655F6379636C65735F22 +:107DA800756E69743231380065726173655F637925 +:107DB800636C65735F756E69743231390065726121 +:107DC80073655F6379636C65735F756E697432326E +:107DD800300065726173655F6379636C65735F75A5 +:107DE8006E69743232310065726173655F637963FD +:107DF8006C65735F756E69743232320065726173D7 +:107E0800655F6379636C65735F756E69743232336D +:107E18000065726173655F6379636C65735F756E26 +:107E280069743232340065726173655F6379636CBB +:107E380065735F756E69743232350065726173659A +:107E48005F6379636C65735F756E6974323236008F +:107E580065726173655F6379636C65735F756E697D +:107E6800743232370065726173655F6379636C657C +:107E7800735F756E69743232380065726173655F5D +:107E88006379636C65735F756E6974323239006546 +:107E9800726173655F6379636C65735F756E69742E +:107EA8003233300065726173655F6379636C657343 +:107EB8005F756E69743233310065726173655F6333 +:107EC80079636C65735F756E6974323332006572FD +:107ED8006173655F6379636C65735F756E6974322E +:107EE80033330065726173655F6379636C65735FD3 +:107EF800756E69743233340065726173655F6379D6 +:107F0800636C65735F756E697432333500657261D1 +:107F180073655F6379636C65735F756E697432331B +:107F2800360065726173655F6379636C65735F754D +:107F38006E69743233370065726173655F637963A4 +:107F48006C65735F756E697432333800657261737E +:107F5800655F6379636C65735F756E697432333915 +:107F68000065726173655F6379636C65735F756ED5 +:107F780069743234300065726173655F6379636C6C +:107F880065735F756E69743234310065726173654B +:107F98005F6379636C65735F756E69743234320040 +:107FA80065726173655F6379636C65735F756E692C +:107FB800743234330065726173655F6379636C652D +:107FC800735F756E69743234340065726173655F0E +:107FD8006379636C65735F756E69743234350065F7 +:107FE800726173655F6379636C65735F756E6974DD +:107FF8003234360065726173655F6379636C6573EB +:108008005F756E69743234370065726173655F63DA +:1080180079636C65735F756E6974323438006572A4 +:108028006173655F6379636C65735F756E697432DC +:1080380034390065726173655F6379636C65735F7A +:10804800756E69743235300065726173655F637986 +:10805800636C65735F756E69743235310065726182 +:1080680073655F6379636C65735F756E69743235C8 +:10807800320065726173655F6379636C65735F7500 +:108088006E69743235330065726173655F63796355 +:108098006C65735F756E697432353400657261732F +:1080A800655F6379636C65735F756E6974323535C6 +:1080B8000064697274795F726561645F756E697472 +:1080C800300064697274795F726561645F756E69A6 +:1080D80074310064697274795F726561645F756E8A +:1080E8006974320064697274795F726561645F757E +:1080F8006E6974330064697274795F726561645F74 +:10810800756E6974340064697274795F726561644C +:108118005F756E6974350064697274795F72656140 +:10812800645F756E6974360064697274795F72652C +:1081380061645F756E6974370064697274795F721F +:108148006561645F756E6974380064697274795F1B +:10815800726561645F756E697439006469727479F7 +:108168005F726561645F756E69743130006469724D +:1081780074795F726561645F756E6974313100642A +:10818800697274795F726561645F756E69743132A2 +:108198000064697274795F726561645F756E697491 +:1081A80031330064697274795F726561645F756EFA +:1081B800697431340064697274795F726561645FEF +:1081C800756E697431350064697274795F726561BE +:1081D800645F756E697431360064697274795F72B0 +:1081E8006561645F756E69743137006469727479AA +:1081F8005F726561645F756E6974313800646972B5 +:1082080074795F726561645F756E69743139006491 +:10821800697274795F726561645F756E6974323012 +:108228000064697274795F726561645F756E697400 +:1082380032310064697274795F726561645F756E6A +:10824800697432320064697274795F726561645F5F +:10825800756E697432330064697274795F7265612E +:10826800645F756E697432340064697274795F7220 +:108278006561645F756E697432350064697274791A +:108288005F726561645F756E697432360064697225 +:1082980074795F726561645F756E69743237006402 +:1082A800697274795F726561645F756E697432387A +:1082B8000064697274795F726561645F756E697470 +:1082C80032390064697274795F726561645F756ED2 +:1082D800697433300064697274795F726561645FD0 +:1082E800756E697433310064697274795F7265619F +:1082F800645F756E697433320064697274795F7291 +:108308006561645F756E697433330064697274798A +:108318005F726561645F756E697433340064697295 +:1083280074795F726561645F756E69743335006472 +:10833800697274795F726561645F756E69743336EA +:108348000064697274795F726561645F756E6974DF +:1083580033370064697274795F726561645F756E42 +:10836800697433380064697274795F726561645F37 +:10837800756E697433390064697274795F72656106 +:10838800645F756E697434300064697274795F7201 +:108398006561645F756E69743431006469727479FB +:1083A8005F726561645F756E697434320064697206 +:1083B80074795F726561645F756E697434330064E3 +:1083C800697274795F726561645F756E697434345B +:1083D8000064697274795F726561645F756E69744F +:1083E80034350064697274795F726561645F756EB3 +:1083F800697434360064697274795F726561645FA8 +:10840800756E697434370064697274795F72656176 +:10841800645F756E697434380064697274795F7268 +:108428006561645F756E6974343900646972747962 +:108438005F726561645F756E697435300064697276 +:1084480074795F726561645F756E69743531006453 +:10845800697274795F726561645F756E69743532CB +:108468000064697274795F726561645F756E6974BE +:1084780035330064697274795F726561645F756E23 +:10848800697435340064697274795F726561645F18 +:10849800756E697435350064697274795F726561E7 +:1084A800645F756E697435360064697274795F72D9 +:1084B8006561645F756E69743537006469727479D3 +:1084C8005F726561645F756E6974353800646972DE +:1084D80074795F726561645F756E697435390064BB +:1084E800697274795F726561645F756E697436303C +:1084F8000064697274795F726561645F756E69742E +:1085080036310064697274795F726561645F756E93 +:10851800697436320064697274795F726561645F88 +:10852800756E697436330064697274795F72656157 +:10853800645F756E697436340064697274795F7249 +:108548006561645F756E6974363500646972747943 +:108558005F726561645F756E69743636006469724E +:1085680074795F726561645F756E6974363700642B +:10857800697274795F726561645F756E69743638A3 +:108588000064697274795F726561645F756E69749D +:1085980036390064697274795F726561645F756EFB +:1085A800697437300064697274795F726561645FF9 +:1085B800756E697437310064697274795F726561C8 +:1085C800645F756E697437320064697274795F72BA +:1085D8006561645F756E69743733006469727479B4 +:1085E8005F726561645F756E6974373400646972BF +:1085F80074795F726561645F756E6974373500649C +:10860800697274795F726561645F756E6974373613 +:108618000064697274795F726561645F756E69740C +:1086280037370064697274795F726561645F756E6B +:10863800697437380064697274795F726561645F60 +:10864800756E697437390064697274795F7265612F +:10865800645F756E697438300064697274795F722A +:108668006561645F756E6974383100646972747924 +:108678005F726561645F756E69743832006469722F +:1086880074795F726561645F756E6974383300640C +:10869800697274795F726561645F756E6974383484 +:1086A8000064697274795F726561645F756E69747C +:1086B80038350064697274795F726561645F756EDC +:1086C800697438360064697274795F726561645FD1 +:1086D800756E697438370064697274795F726561A0 +:1086E800645F756E697438380064697274795F7292 +:1086F8006561645F756E697438390064697274798C +:108708005F726561645F756E69743930006469729F +:1087180074795F726561645F756E6974393100647C +:10872800697274795F726561645F756E69743932F4 +:108738000064697274795F726561645F756E6974EB +:1087480039330064697274795F726561645F756E4C +:10875800697439340064697274795F726561645F41 +:10876800756E697439350064697274795F72656110 +:10877800645F756E697439360064697274795F7202 +:108788006561645F756E69743937006469727479FC +:108798005F726561645F756E697439380064697207 +:1087A80074795F726561645F756E697439390064E4 +:1087B800697274795F726561645F756E697431306E +:1087C800300064697274795F726561645F756E699F +:1087D800743130310064697274795F726561645F05 +:1087E800756E69743130320064697274795F7265CC +:1087F80061645F756E6974313033006469727479CD +:108808005F726561645F756E6974313034006469E4 +:108818007274795F726561645F756E697431303541 +:108828000064697274795F726561645F756E6974FA +:108838003130360064697274795F726561645F759E +:108848006E69743130370064697274795F7265617A +:10885800645F756E69743130380064697274795F69 +:10886800726561645F756E6974313039006469726C +:1088780074795F726561645F756E69743131300057 +:1088880064697274795F726561645F756E69743169 +:1088980031310064697274795F726561645F756E05 +:1088A80069743131320064697274795F7265616428 +:1088B8005F756E69743131330064697274795F72FF +:1088C8006561645F756E697431313400646972740E +:1088D800795F726561645F756E6974313135006402 +:1088E800697274795F726561645F756E697431313C +:1088F800360064697274795F726561645F756E6968 +:10890800743131370064697274795F726561645FCC +:10891800756E69743131380064697274795F726593 +:1089280061645F756E697431313900646972747994 +:108938005F726561645F756E6974313230006469B5 +:108948007274795F726561645F756E697431323112 +:108958000064697274795F726561645F756E6974C9 +:108968003132320064697274795F726561645F756F +:108978006E69743132330064697274795F7265614B +:10898800645F756E69743132340064697274795F3A +:10899800726561645F756E6974313235006469723D +:1089A80074795F726561645F756E6974313236001F +:1089B80064697274795F726561645F756E69743138 +:1089C80032370064697274795F726561645F756ECD +:1089D80069743132380064697274795F72656164F0 +:1089E8005F756E69743132390064697274795F72C7 +:1089F8006561645F756E69743133300064697274DF +:108A0800795F726561645F756E69743133310064D2 +:108A1800697274795F726561645F756E6974313308 +:108A2800320064697274795F726561645F756E693A +:108A3800743133330064697274795F726561645F9D +:108A4800756E69743133340064697274795F726564 +:108A580061645F756E697431333500646972747965 +:108A68005F726561645F756E69743133360064697D +:108A78007274795F726561645F756E6974313337DA +:108A88000064697274795F726561645F756E697498 +:108A98003133380064697274795F726561645F7537 +:108AA8006E69743133390064697274795F72656113 +:108AB800645F756E69743134300064697274795F0B +:108AC800726561645F756E6974313431006469720E +:108AD80074795F726561645F756E697431343200F0 +:108AE80064697274795F726561645F756E69743107 +:108AF80034330064697274795F726561645F756E9E +:108B080069743134340064697274795F72656164C0 +:108B18005F756E69743134350064697274795F7297 +:108B28006561645F756E69743134360064697274A6 +:108B3800795F726561645F756E697431343700649A +:108B4800697274795F726561645F756E69743134D6 +:108B5800380064697274795F726561645F756E6903 +:108B6800743134390064697274795F726561645F65 +:108B7800756E69743135300064697274795F726535 +:108B880061645F756E697431353100646972747936 +:108B98005F726561645F756E69743135320064694E +:108BA8007274795F726561645F756E6974313533AB +:108BB8000064697274795F726561645F756E697467 +:108BC8003135340064697274795F726561645F7508 +:108BD8006E69743135350064697274795F726561E4 +:108BE800645F756E69743135360064697274795FD3 +:108BF800726561645F756E697431353700646972D6 +:108C080074795F726561645F756E697431353800B7 +:108C180064697274795F726561645F756E697431D5 +:108C280035390064697274795F726561645F756E65 +:108C380069743136300064697274795F7265616491 +:108C48005F756E69743136310064697274795F7268 +:108C58006561645F756E6974313632006469727477 +:108C6800795F726561645F756E697431363300646B +:108C7800697274795F726561645F756E69743136A3 +:108C8800340064697274795F726561645F756E69D6 +:108C9800743136350064697274795F726561645F36 +:108CA800756E69743136360064697274795F7265FD +:108CB80061645F756E6974313637006469727479FE +:108CC8005F726561645F756E697431363800646916 +:108CD8007274795F726561645F756E697431363973 +:108CE8000064697274795F726561645F756E697436 +:108CF8003137300064697274795F726561645F75D9 +:108D08006E69743137310064697274795F726561B4 +:108D1800645F756E69743137320064697274795FA3 +:108D2800726561645F756E697431373300646972A6 +:108D380074795F726561645F756E69743137340088 +:108D480064697274795F726561645F756E697431A4 +:108D580037350064697274795F726561645F756E36 +:108D680069743137360064697274795F7265616459 +:108D78005F756E69743137370064697274795F7230 +:108D88006561645F756E697431373800646972743F +:108D9800795F726561645F756E6974313739006433 +:108DA800697274795F726561645F756E6974313870 +:108DB800300064697274795F726561645F756E69A9 +:108DC800743138310064697274795F726561645F07 +:108DD800756E69743138320064697274795F7265CE +:108DE80061645F756E6974313833006469727479CF +:108DF8005F726561645F756E6974313834006469E7 +:108E08007274795F726561645F756E697431383543 +:108E18000064697274795F726561645F756E697404 +:108E28003138360064697274795F726561645F75A0 +:108E38006E69743138370064697274795F7265617C +:108E4800645F756E69743138380064697274795F6B +:108E5800726561645F756E6974313839006469726E +:108E680074795F726561645F756E69743139300059 +:108E780064697274795F726561645F756E69743173 +:108E880039310064697274795F726561645F756E07 +:108E980069743139320064697274795F726561642A +:108EA8005F756E69743139330064697274795F7201 +:108EB8006561645F756E6974313934006469727410 +:108EC800795F726561645F756E6974313935006404 +:108ED800697274795F726561645F756E697431393E +:108EE800360064697274795F726561645F756E6972 +:108EF800743139370064697274795F726561645FCF +:108F0800756E69743139380064697274795F726595 +:108F180061645F756E697431393900646972747996 +:108F28005F726561645F756E6974323030006469C0 +:108F38007274795F726561645F756E69743230311D +:108F48000064697274795F726561645F756E6974D3 +:108F58003230320064697274795F726561645F757A +:108F68006E69743230330064697274795F72656156 +:108F7800645F756E69743230340064697274795F45 +:108F8800726561645F756E69743230350064697248 +:108F980074795F726561645F756E6974323036002A +:108FA80064697274795F726561645F756E69743241 +:108FB80030370064697274795F726561645F756ED9 +:108FC80069743230380064697274795F72656164FB +:108FD8005F756E69743230390064697274795F72D2 +:108FE8006561645F756E69743231300064697274EA +:108FF800795F726561645F756E69743231310064DE +:10900800697274795F726561645F756E6974323113 +:10901800320064697274795F726561645F756E6944 +:10902800743231330064697274795F726561645FA8 +:10903800756E69743231340064697274795F72656F +:1090480061645F756E697432313500646972747970 +:109058005F726561645F756E697432313600646988 +:109068007274795F726561645F756E6974323137E5 +:109078000064697274795F726561645F756E6974A2 +:109088003231380064697274795F726561645F7542 +:109098006E69743231390064697274795F7265611E +:1090A800645F756E69743232300064697274795F16 +:1090B800726561645F756E69743232310064697219 +:1090C80074795F726561645F756E697432323200FB +:1090D80064697274795F726561645F756E69743210 +:1090E80032330064697274795F726561645F756EAA +:1090F80069743232340064697274795F72656164CC +:109108005F756E69743232350064697274795F72A2 +:109118006561645F756E69743232360064697274B1 +:10912800795F726561645F756E69743232370064A5 +:10913800697274795F726561645F756E69743232E1 +:10914800380064697274795F726561645F756E690D +:10915800743232390064697274795F726561645F70 +:10916800756E69743233300064697274795F726540 +:1091780061645F756E697432333100646972747941 +:109188005F726561645F756E697432333200646959 +:109198007274795F726561645F756E6974323333B6 +:1091A8000064697274795F726561645F756E697471 +:1091B8003233340064697274795F726561645F7513 +:1091C8006E69743233350064697274795F726561EF +:1091D800645F756E69743233360064697274795FDE +:1091E800726561645F756E697432333700646972E1 +:1091F80074795F726561645F756E697432333800C3 +:1092080064697274795F726561645F756E697432DE +:1092180033390064697274795F726561645F756E71 +:1092280069743234300064697274795F726561649C +:109238005F756E69743234310064697274795F7273 +:109248006561645F756E6974323432006469727482 +:10925800795F726561645F756E6974323433006476 +:10926800697274795F726561645F756E69743234AE +:10927800340064697274795F726561645F756E69E0 +:10928800743234350064697274795F726561645F41 +:10929800756E69743234360064697274795F726508 +:1092A80061645F756E697432343700646972747909 +:1092B8005F726561645F756E697432343800646921 +:1092C8007274795F726561645F756E69743234397E +:1092D8000064697274795F726561645F756E697440 +:1092E8003235300064697274795F726561645F75E4 +:1092F8006E69743235310064697274795F726561C0 +:10930800645F756E69743235320064697274795FAE +:10931800726561645F756E697432353300646972B1 +:1093280074795F726561645F756E69743235340093 +:1093380064697274795F726561645F756E697432AD +:109348003535006770696F40343030313330303034 +:10935800006770696F403430303132303030006728 +:1093680070696F40343030313130303000677069A7 +:109378006F403430303130303030006D7073325FD0 +:1093880066706761696F403430303238303463005A +:109398006D7073325F66706761696F403430303268 +:1093A80038303038006D7073325F66706761696F8E +:1093B8004034303032383030300072657461696E54 +:1093C80065646D656D0072657461696E65645F6D75 +:1093D800656D5F7A65706879725F72616D0075613D +:1093E8007274403430303036303030007561727409 +:1093F800403430303035303030007561727440346C +:10940800303030343030300025633A2048616C7495 +:10941800696E672073797374656D0A00556E6B6E9B +:109428006F776E206572726F7200756E6B6E6F77F4 +:109438006E0025633A203E3E3E205A455048595218 +:1094480020464154414C204552524F522025643AFF +:10945800202573206F6E204350552025640A00256F +:10946800633A204661756C7420647572696E672072 +:10947800696E746572727570742068616E646C6967 +:109488006E670A0A0025633A2043757272656E7426 +:10949800207468726561643A202570202825732934 +:1094A8000A0043505520657863657074696F6E00D3 +:1094B800556E68616E646C656420696E746572725D +:1094C80075707400537461636B206F766572666C97 +:1094D8006F77004B65726E656C206F6F7073004B11 +:1094E80065726E656C2070616E6963006D61696E8E +:1094F800006F730025633A20257020287265616427 +:10950800792028792F6E293A2025632920707269DD +:109518006F206368616E67656420746F202564201E +:1095280028776173202564290A0025633A2025706D +:1095380020746F6F6B206D757465782025702C20F2 +:10954800636F756E743A2025642C206F72696720EA +:109558007072696F3A2025640A0025633A206164B5 +:109568006A757374696E67207072696F20757020F0 +:109578006F6E206D757465782025700A0025633A32 +:10958800206F6E206D7574657820257020676F7464 +:109598005F6D757465782076616C75653A20256411 +:1095A8000A0025633A20257020676F74206D757452 +:1095B80065782025702028792F6E293A2025630A9E +:1095C8000025633A2025702074696D656F757420D5 +:1095D8006F6E206D757465782025700A0025633AD2 +:1095E8002061646A757374696E67207072696F2090 +:1095F800646F776E206F6E206D75746578202570A6 +:109608000A0025633A206D75746578202570206CF2 +:109618006F636B5F636F756E743A2025640A00256B +:10962800633A206E6577206F776E6572206F6620CB +:109638006D757465782025703A2025702028707221 +:10964800696F3A202564290A0025633A20737461FA +:10965800636B20257020666F722074687265616480 +:109668002025703A206F626A5F73697A653D257AB2 +:1096780075206275665F73746172743D2570202071 +:109688006275665F73697A6520257A7520737461DF +:10969800636B5F7074723D25700A00286E756C6C80 +:1096A80029001800686B00001C00786B000020007F +:1096B800886B00001800906B00001C009B6B00007A +:1096C8002000A96B00002400B76B00002800C86BBD +:1096D80000002C00DB6B00003000ED6B0000340054 +:1096E800016C00003800136C00003C00276C00007F +:1096F80040003A6C000044004D6C00004800606C6B +:1097080000004C00736C00005000866C0000540090 +:10971800996C00005800AC6C00005C00BF6C000045 +:109728006000D26C00006400E56C00006800F96C11 +:1097380000006C000D6D00007000216D00007400C9 +:10974800356D00007800496D00007C005D6D0000FB +:109758008000716D00008400856D00008800996D9F +:1097680000008C00AD6D00009000C16D00009400F9 +:10977800D56D00009800E96D00009C00FD6D0000AB +:10978800A000116E0000A400256E0000A800396E2C +:109798000000AC004D6E0000B000616E0000B40027 +:1097A800756E0000B800896E0000BC009D6E000058 +:1097B800C000B16E0000C400C56E0000C800D96EBC +:1097C8000000CC00ED6E0000D000016F0000D40056 +:1097D800156F0000D800296F0000DC003D6F000005 +:1097E800E000516F0000E400656F0000E800796F49 +:1097F8000000EC008D6F0000F000A16F0000F40085 +:10980800B56F0000F800C96F0000FC00DD6F0000B4 +:109818000001F16F000004010570000008011970D3 +:1098280000000C012D7000001001417000001401AF +:10983800557000001801697000001C017D7000005F +:109848002001917000002401A57000002801B97062 +:1098580000002C01CD7000003001E17000003401DF +:10986800F57000003801097100003C011D7100000D +:1098780040013171000044014571000048015971EF +:1098880000004C016D71000050018171000054010D +:10989800957100005801A97100005C01BD710000BC +:1098A8006001D17100006401E57100006801F9717F +:1098B80000006C010D72000070012172000074013B +:1098C800357200007801497200007C015D72000069 +:1098D800800171720000840185720000880199720C +:1098E80000008C01AD7200009001C172000094016B +:1098F800D57200009801E97200009C01FD72000019 +:10990800A00111730000A40125730000A801397398 +:109918000000AC014D730000B00161730000B40198 +:1099280075730000B80189730000BC019D730000C5 +:10993800C001B1730000C401C5730000C801D97328 +:109948000000CC01ED730000D00102740000D401C6 +:1099580017740000D8012C740000DC014174000069 +:10996800E00156740000E4016B740000E8018074A3 +:109978000000EC0195740000F001AA740000F401E5 +:10998800BF740000F801D4740000FC01E974000001 +:109998000002FE7400000402137500000802287516 +:1099A80000000C023D750000100252750000140200 +:1099B8006775000018027C7500001C029175000094 +:1099C8002002A67500002402BB7500002802D0758D +:1099D80000002C02E57500003002FA750000340220 +:1099E8000F7600003802247600003C023976000029 +:1099F80040024E7600004402637600004802787602 +:109A080000004C028D7600005002A276000054023D +:109A1800B77600005802CC7600005C02E1760000C0 +:109A28006002F676000064020B7700006802207777 +:109A380000006C023577000070024A77000074025B +:109A48005F7700007802747700007C028977000055 +:109A580080029E7700008402B37700008802C877EE +:109A680000008C02DD7700009002F277000094027B +:109A78000778000098021C7800009C0231780000EA +:109A8800A00246780000A4025B780000A802707863 +:109A98000000AC0285780000B0029A780000B40299 +:109AA800AF780000B802C4780000BC02D978000082 +:109AB800C002EE780000C40203790000C8021879D9 +:109AC8000000CC022D790000D00242790000D402B7 +:109AD80057790000D8026C790000DC028179000017 +:109AE800E00296790000E402AB790000E802C07950 +:109AF8000000EC02D5790000F002EA790000F402D7 +:109B0800FF790000F802147A0000FC02297A0000AC +:109B180000033E7A00000403537A00000803687AC1 +:109B280000000C037D7A00001003927A00001403F1 +:109B3800A77A00001803BC7A00001C03D17A000041 +:109B48002003E67A00002403FB7A00002803107B38 +:109B580000002C03257B000030033A7B000034030F +:109B68004F7B00003803647B00003C03797B0000D6 +:109B780040038E7B00004403A37B00004803B87BAE +:109B880000004C03CD7B00005003E27B000054032F +:109B9800F77B000058030C7C00005C03217C00006C +:109BA8006003367C000064034B7C00006803607C23 +:109BB80000006C03757C000070038A7C000074034D +:109BC8009F7C00007803B47C00007C03C97C000003 +:109BD8008003DE7C00008403F37C00008803087D9A +:109BE80000008C031D7D00009003327D000094036B +:109BF800477D000098035C7D00009C03717D000098 +:109C0800A003867D0000A4039B7D0000A803B07D0F +:109C18000000AC03C57D0000B003DA7D0000B4038A +:109C2800EF7D0000B803047E0000BC03197E00002D +:109C3800C0032E7E0000C403437E0000C803587E84 +:109C48000000CC036D7E0000D003827E0000D403A8 +:109C5800977E0000D803AC7E0000DC03C17E0000C4 +:109C6800E003D67E0000E403EB7E0000E803007FFB +:109C78000000EC03157F0000F0032A7F0000F403C6 +:109C88003F7F0000F803547F0000FC03697F000059 +:109C980000047E7F00000404937F00000804A87F6E +:109CA80000000C04BD7F00001004D27F00001404E3 +:109CB800E77F00001804FC7F00001C0411800000EE +:109CC80020042680000024043B80000028045080E3 +:109CD80000002C046580000030047A800000340401 +:109CE8008F8000003804A48000003C04B980000084 +:109CF8004004CA8000004404DB8000004804EC8073 +:109D080000004C04FD80000050040E810000540443 +:109D18001F8100005804308100005C04418100006C +:109D28006004528100006404638100006804758146 +:109D380000006C048781000070049981000074049D +:109D4800AB8100007804BD8100007C04CF81000055 +:109D58008004E18100008404F38100008804058206 +:109D680000008C04178200009004298200009404EB +:109D78003B82000098044D8200009C045F82000032 +:109D8800A00471820000A40483820000A8049582C4 +:109D98000000AC04A7820000B004B9820000B4043B +:109DA800CB820000B804DD820000BC04EF82000012 +:109DB800C00401830000C40413830000C804258381 +:109DC8000000CC0437830000D00449830000D40489 +:109DD8005B830000D8046D830000DC047F830000EF +:109DE800E00491830000E404A3830000E804B58341 +:109DF8000000EC04C7830000F004D9830000F404D9 +:109E0800EB830000F804FD830000FC040F840000CD +:109E180000052184000004053384000008054584FA +:109E280000000C0557840000100569840000140523 +:109E38007B84000018058D8400001C059F840000A9 +:109E48002005B18400002405C38400002805D584BA +:109E580000002C05E78400003005F9840000340573 +:109E68000B85000038051D8500003C052F85000086 +:109E78004005418500004405538500004805658577 +:109E880000004C05778500005005898500005405C1 +:109E98009B8500005805AD8500005C05BF85000066 +:109EA8006005D18500006405E38500006805F58537 +:109EB80000006C050786000070051986000074050F +:109EC8002B86000078053D8600007C054F86000043 +:109ED80080056186000084057386000088058586F4 +:109EE80000008C05978600009005A986000094055F +:109EF800BB8600009805CD8600009C05DF86000023 +:109F0800A005F1860000A40503870000A8051587B1 +:109F18000000AC0527870000B00539870000B405AC +:109F28004B870000B8055D870000BC056F870000FF +:109F3800C00581870000C40593870000C805A58770 +:109F48000000CC05B7870000D005CA870000D405FB +:109F5800DD870000D805F0870000DC0503880000D5 +:109F6800E00516880000E40529880000E8053C881B +:109F78000000EC054F880000F00562880000F40539 +:109F880075880000F80588880000FC059B8800009B +:109F98000006AE8800000406C18800000806D488C0 +:109FA80000000C06E78800001006FA880000140676 +:109FB8000D8900001806208900001C06338900005E +:109FC80020064689000024065989000028066C8965 +:109FD80000002C067F8900003006928900003406B4 +:109FE800A58900003806B88900003C06CB89000026 +:109FF8004006DE8900004406F18900004806048A0C +:10A0080000004C06178A000050062A8A00005406F1 +:10A018003D8A00005806508A00005C06638A0000EA +:10A028006006768A00006406898A000068069C8AB1 +:10A0380000006C06AF8A00007006C28A0000740631 +:10A04800D58A00007806E88A00007C06FB8A0000B2 +:10A0580080060E8B00008406218B00008806348B56 +:10A0680000008C06478B000090065A8B000094066F +:10A078006D8B00009806808B00009C06938B000077 +:10A08800A006A68B0000A406B98B0000A806CC8BFE +:10A098000000AC06DF8B0000B006F28B0000B406AF +:10A0A800058C0000B806188C0000BC062B8C00003C +:10A0B800C0063E8C0000C406518C0000C806648CA3 +:10A0C8000000CC06778C0000D0068A8C0000D406ED +:10A0D8009D8C0000D806B08C0000DC06C38C000004 +:10A0E800E006D68C0000E406E98C0000E806FC8C4B +:10A0F8000000EC060F8D0000F006228D0000F4062B +:10A10800358D0000F806488D0000FC065B8D0000C8 +:10A1180000076E8D00000407818D00000807948DEC +:10A1280000000C07A78D00001007BA8D0000140767 +:10A13800CD8D00001807E08D00001C07F38D00008E +:10A148002007068E00002407198E000028072C8E91 +:10A1580000002C073F8E00003007528E00003407A5 +:10A16800658E00003807788E00003C078B8E000053 +:10A1780040079E8E00004407B18E00004807C48E39 +:10A1880000004C07D78E00005007EA8E00005407E5 +:10A19800FD8E00005807108F00005C07238F000019 +:10A1A8006007368F00006407498F000068075C8FDE +:10A1B80000006C076F8F00007007828F0000740723 +:10A1C800958F00007807A88F00007C07BB8F0000E0 +:10A1D8008007CE8F00008407E18F00008807F48F86 +:10A1E80000008C070790000090071A900000940761 +:10A1F8002D9000009807409000009C0753900000A5 +:10A20800A00766900000A40779900000A8078C902A +:10A218000000AC079F900000B007B2900000B407A0 +:10A22800C5900000B807D8900000BC07EB9000006C +:10A23800C007FE900000C40711910000C8072491D0 +:10A248000000CC0737910000D0074A910000D407DE +:10A258005D910000D80770910000DC078391000031 +:10A26800E00796910000E407A9910000E807BC9177 +:10A278000000EC07CF910000F007E2910000F4071E +:10A28800F5910000F80708920000FC071B920000F7 +:10A2980000082E9200000408419200000808549219 +:10A2A80000000C086792000010087A920000140859 +:10A2B8008D9200001808A09200001C08B3920000BC +:10A2C8002008C69200002408D99200002808EC92C1 +:10A2D80000002C08FF920000300812930000340898 +:10A2E8002593000038083893000001020203030395 +:04A2F800030000005F +:10A2FC00BD3C00002458000001000000FFFFFFFFE0 +:10A30C00D51900000000000095410000000000007D +:10A31C0000000000000004200000000000C201004A +:10A32C000000000000000000010000000060004080 +:10A33C0001010000006000400102000000600040CC +:10A34C0000C201000000000000000000010000003D +:10A35C0000500040010100000050004001020000CC +:10A36C000050004000C2010000000000000000008E +:10A37C0001000000004000400101000000400040CE +:10A38C00010200000040004002000000FFFFFFFF40 +:0AA39C00A0000020A0000020040033 +:10A3A60000000000000000000000000000000000A7 +:0EA3B600000000000000000000000000000099 +:10A3C400C8000020C80000200000000000000000B9 +:04A3D4000E00000077 +:04A3D80015E015E097 +:0400000300001E01DA +:00000001FF diff --git a/tests/fixtures/smp-server/zephyr_f33aa2bc4a43_smp_server_c8f44c41_mps2_an385_serial_recovery_raw.signed.bin b/tests/fixtures/smp-server/zephyr_f33aa2bc4a43_smp_server_c8f44c41_mps2_an385_serial_recovery_raw.signed.bin new file mode 100644 index 0000000000000000000000000000000000000000..85f1adbeb4fd3d0faa7c91afc09ce264b6d0e3f8 GIT binary patch literal 132504 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

T3RIf7!YYk6(Cgh*HZ&40>IW8OE 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 literal 0 HcmV?d00001 diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index 7db676e..0e1f5bc 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -11,8 +11,10 @@ import asyncio import logging +import re from collections.abc import AsyncIterator, Callable from contextlib import asynccontextmanager +from pathlib import Path from typing import NamedTuple import pytest @@ -31,6 +33,7 @@ FIXTURES, Endpoint, PtyEndpoint, + QemuSocketSerialRawTransport, QemuSocketSerialTransport, ServerFixture, SocketSerialEndpoint, @@ -85,7 +88,15 @@ def _build_transport(fixture: ServerFixture, endpoint: Endpoint) -> tuple[SMPTra case _ as unreachable: assert_never(unreachable) case SocketSerialEndpoint(url): - return QemuSocketSerialTransport(url), url + match fixture.transport: + case "serial" | "shell": + return QemuSocketSerialTransport(url), url + case "serial_raw": + return QemuSocketSerialRawTransport(url), url + case "udp": + pytest.fail("UDP fixtures do not present as a socket serial endpoint") + case _ as unreachable: + assert_never(unreachable) case UdpEndpoint(host, port): if port != _SMP_UDP_DEFAULT_PORT: pytest.skip( @@ -109,6 +120,21 @@ async def _wait_until_answering(client: SMPClient, *, attempts: int = 30) -> Non raise TimeoutError(f"{client.address} never answered an echo") +def signed_image(fixture: ServerFixture) -> Path: + """The signed image paired with `fixture` -- its `.hex` artifact's sibling `.signed.bin`. + + This is the DFU payload an img-group server accepts, and what an MCUboot serial-recovery + server reassembles. + + Args: + fixture: the fixture whose paired signed image to locate. + + Returns: + The path to the fixture's signed image. + """ + return fixture.path.with_name(re.sub(r"\.(merged\.)?hex$", ".signed.bin", fixture.artifact)) + + async def upload_image( client: SMPClient, image: bytes, *, max_bytes: int | None = None ) -> list[int]: diff --git a/tests/integration/servers.py b/tests/integration/servers.py index 45455a4..3321d30 100644 --- a/tests/integration/servers.py +++ b/tests/integration/servers.py @@ -35,11 +35,14 @@ from typing import Final, Literal, NamedTuple import serial as pyserial -from smp import packet as smppacket from typing_extensions import override from smpclient.transport import SMPTransportDisconnected -from smpclient.transport.serial import FragmentationStrategy, SMPSerialTransport +from smpclient.transport.serial import ( + FragmentationStrategy, + SMPSerialRawTransport, + SMPSerialTransport, +) logger = logging.getLogger(__name__) @@ -224,12 +227,50 @@ def _load_fixtures() -> tuple[ServerFixture, ...]: FIXTURES: Final = _load_fixtures() +async def _connect_socket_chardev( + transport: SMPSerialTransport | SMPSerialRawTransport, url: str, timeout_s: float +) -> None: + """Back `transport` with an emulator's `socket://` serial chardev, retrying until it accepts. + + Replaces the `Final` pyserial `_conn` with a socket-backed `Serial`, sidestepping the + PTY held-byte quirk of an emulated UART. Shared by the encoded and raw socket + transports, which differ only in their on-wire framing. + + Args: + transport: the socket-backed serial transport whose `_conn` to (re)bind. + url: the emulator's `socket://host:port` chardev URL. + timeout_s: how long to keep retrying before the socket must have accepted. + + Raises: + TimeoutError: if the emulator's serial socket never accepts within `timeout_s`. + """ + transport._reset_state() + loop = asyncio.get_running_loop() + deadline = loop.time() + timeout_s + while True: + try: + conn = pyserial.serial_for_url(url, timeout=0, write_timeout=0) + except (OSError, pyserial.SerialException) as e: + if loop.time() >= deadline: + raise TimeoutError(f"emulator serial socket {url} never accepted: {e}") + await asyncio.sleep(transport._CONNECTION_RETRY_INTERVAL_S) + continue + # `_conn` is `Final` on the base class; replace it for the socket backend. + object.__setattr__(transport, "_conn", conn) + # A socket chardev has no host-side TX buffer; pyserial omits `out_waiting` for it. + # Supply 0 so the inherited `send`'s `_drain_tx` poll is a no-op (nothing to drain). + object.__setattr__(conn, "out_waiting", 0) + logger.debug(f"Connected to {url}") + return + + class QemuSocketSerialTransport(SMPSerialTransport): """`SMPSerialTransport` whose byte pipe is a TCP socket (an emulator's serial chardev). - Identical SMP framing and fragmentation to `SMPSerialTransport`; only the - underlying connection differs, sidestepping the PTY held-byte quirk of an - emulated UART. The socket has no `out_waiting`, so `send()` omits that drain. + Only `connect` differs -- it binds a `socket://` chardev instead of a local serial + port, sidestepping the PTY held-byte quirk of an emulated UART. Framing, + fragmentation, `send`, and `receive` are inherited unchanged, so the suite exercises + the real transport rather than a copy of it. """ def __init__( # noqa: DOC301 @@ -245,34 +286,24 @@ def __init__( # noqa: DOC301 @override async def connect(self, address: str, timeout_s: float) -> None: - self._reset_state() - loop = asyncio.get_running_loop() - deadline = loop.time() + timeout_s - while True: - try: - conn = pyserial.serial_for_url(self._url, timeout=0, write_timeout=0) - except (OSError, pyserial.SerialException) as e: - if loop.time() >= deadline: - raise TimeoutError(f"emulator serial socket {self._url} never accepted: {e}") - await asyncio.sleep(SMPSerialTransport._CONNECTION_RETRY_INTERVAL_S) - continue - # `_conn` is `Final` on the base class; replace it for the socket backend. - object.__setattr__(self, "_conn", conn) - logger.debug(f"Connected to {self._url}") - return + await _connect_socket_chardev(self, self._url, timeout_s) + + +class QemuSocketSerialRawTransport(SMPSerialRawTransport): + """`SMPSerialRawTransport` whose byte pipe is a TCP socket (an emulator's serial chardev). + + The raw counterpart of `QemuSocketSerialTransport`: only `connect` differs; the raw + `[header][payload]` framing, `send`, and `receive` are inherited from + `SMPSerialRawTransport` unchanged. + """ + + def __init__(self, url: str, mtu: int = 384) -> None: # noqa: DOC301 + super().__init__(mtu=mtu) + self._url: Final = url @override - async def send(self, data: bytes) -> None: - if len(data) > self.max_unencoded_size: - raise ValueError( - f"Data size {len(data)} exceeds maximum unencoded size {self.max_unencoded_size}" - ) - try: - for packet in smppacket.encode(data, line_length=self._line_length): - self._conn.write(packet) - except pyserial.SerialException as e: - raise SMPTransportDisconnected(f"{self.__class__.__name__} disconnected: {e}") - await asyncio.sleep(0) + async def connect(self, address: str, timeout_s: float) -> None: + await _connect_socket_chardev(self, self._url, timeout_s) def _verify_sha256(artifact: Path) -> str | None: diff --git a/tests/integration/test_image_management.py b/tests/integration/test_image_management.py index 9aca468..f895d86 100644 --- a/tests/integration/test_image_management.py +++ b/tests/integration/test_image_management.py @@ -7,19 +7,17 @@ from __future__ import annotations -import re -from pathlib import Path - import pytest from smp import packet as smppacket from smpclient.generics import success from smpclient.requests.image_management import ImageStatesRead -from smpclient.transport.serial import SMPSerialTransport +from smpclient.transport.serial import SMPSerialRawTransport, SMPSerialTransport from tests.integration.conftest import ( assert_chunks_maximized, connected, fixture_params, + signed_image, upload_image, ) from tests.integration.servers import ServerFixture @@ -30,11 +28,6 @@ """Upload images at or below this size to completion; cap larger ones for speed.""" -def _signed_image(fixture: ServerFixture) -> Path: - """The signed DFU payload paired with this fixture's image.""" - return fixture.path.with_name(re.sub(r"\.(merged\.)?hex$", ".signed.bin", fixture.artifact)) - - @pytest.mark.parametrize("fixture", fixture_params(lambda f: f.has_group("img"))) async def test_image_states_read(fixture: ServerFixture) -> None: async with connected(fixture) as cs: @@ -46,21 +39,26 @@ async def test_image_states_read(fixture: ServerFixture) -> None: @pytest.mark.parametrize("fixture", fixture_params(lambda f: f.has_group("img"))) async def test_dfu_upload(fixture: ServerFixture) -> None: - image = _signed_image(fixture).read_bytes() + image = signed_image(fixture).read_bytes() cap = None if len(image) <= _FULL_UPLOAD_LIMIT else 16 * 1024 async with connected(fixture) as cs: transport = cs.client._transport - assert isinstance(transport, SMPSerialTransport) - chunk_packets = len( - list(smppacket.encode(b"\x00" * transport.max_unencoded_size, transport._line_length)) - ) - limit = fixture.max_reliable_line_packets - if limit is not None and chunk_packets > limit: - pytest.skip( - f"{fixture.id}: DFU chunk spans {chunk_packets} line packets " - f"(> reliable {limit}); full-buffer DFU covered on mps2" + assert isinstance(transport, (SMPSerialTransport, SMPSerialRawTransport)) + # The line-packet burst limit is an encoded-transport concern; raw writes each + # message in one go. + if isinstance(transport, SMPSerialTransport): + chunk_packets = len( + list( + smppacket.encode(b"\x00" * transport.max_unencoded_size, transport._line_length) + ) ) + limit = fixture.max_reliable_line_packets + if limit is not None and chunk_packets > limit: + pytest.skip( + f"{fixture.id}: DFU chunk spans {chunk_packets} line packets " + f"(> reliable {limit}); full-buffer DFU covered on mps2" + ) offsets = await upload_image(cs.client, image, max_bytes=cap) diff --git a/tests/integration/test_serial_recovery.py b/tests/integration/test_serial_recovery.py index 3edfb0b..d560618 100644 --- a/tests/integration/test_serial_recovery.py +++ b/tests/integration/test_serial_recovery.py @@ -17,8 +17,6 @@ from __future__ import annotations import asyncio -import re -from pathlib import Path import pytest from smp.os_management import BootMode @@ -33,6 +31,7 @@ assert_chunks_maximized, connected, fixture_params, + signed_image, upload_image, ) from tests.integration.servers import QemuSocketSerialTransport, ServerFixture, SocketSerialEndpoint @@ -45,10 +44,6 @@ ] -def _signed_image(fixture: ServerFixture) -> Path: - return fixture.path.with_name(re.sub(r"\.(merged\.)?hex$", ".signed.bin", fixture.artifact)) - - # Only the canonical recovery image: the `serial_recovery_buf` matrix varies the # *app's* netbuf, but they all drop into the same MCUboot recovery server (same line # buffers), so re-testing recovery on each adds nothing. Their buffer sizes are @@ -59,7 +54,7 @@ async def test_upload_to_mcuboot_recovery_smp_server( fixture: ServerFixture, fragmentation: BufferSize | None, ) -> None: - signed = _signed_image(fixture).read_bytes() + signed = signed_image(fixture).read_bytes() async with connected(fixture) as cs: # The app serves the img group before we drop into recovery. diff --git a/tests/integration/test_serial_recovery_raw.py b/tests/integration/test_serial_recovery_raw.py new file mode 100644 index 0000000..46bf294 --- /dev/null +++ b/tests/integration/test_serial_recovery_raw.py @@ -0,0 +1,103 @@ +"""Reset-into-bootloader MCUboot *raw* serial-recovery integration test. + +The raw-framing analog of `test_serial_recovery.py`: a fully-featured app reboots into +MCUboot serial recovery via `os reset boot_mode=BOOTLOADER`, and the bootloader's SMP +server -- built with MCUboot's raw (non-console) recovery protocol +(`BOOT_SERIAL_RAW_PROTOCOL`, mcu-tools/mcuboot#2755) -- reassembles a fragmented image +upload sent over `SMPSerialRawTransport`. + +The fixture is emulated (`mps2_an385`, reached over a TCP socket chardev), so it connects +with the socket-backed `QemuSocketSerialRawTransport` rather than the PTY-backed raw +transport. + +Raw recovery carries the whole `[header][payload]` SMP message in its receive buffer with +no base64/length/CRC framing, so the transport's `mtu` *is* the per-message cap (the +recovery server does not advertise MCUmgr params, so `max_unencoded_size` falls back to +`mtu`). We upload at two `mtu`s to exercise the recovery server's reassembly across very +different transaction sizes: + +- `mtu-384` (the raw transport default): ~360 B payloads. +- `mtu-1024` (fills MCUboot's recovery receive buffer): ~1000 B payloads. +""" + +from __future__ import annotations + +import asyncio + +import pytest +from smp.os_management import BootMode + +from smpclient import SMPClient +from smpclient.exceptions import SMPBadSequence +from smpclient.generics import success +from smpclient.requests.image_management import ImageStatesRead +from smpclient.requests.os_management import ResetWrite +from tests.integration.conftest import ( + assert_chunks_maximized, + connected, + fixture_params, + signed_image, + upload_image, +) +from tests.integration.servers import ( + QemuSocketSerialRawTransport, + ServerFixture, + SocketSerialEndpoint, +) + +pytestmark = [pytest.mark.integration, pytest.mark.asyncio] + +_MTU_CONFIGS = [ + pytest.param(384, id="mtu-384"), + pytest.param(1024, id="mtu-1024"), +] + + +@pytest.mark.parametrize("mtu", _MTU_CONFIGS) +@pytest.mark.parametrize("fixture", fixture_params(lambda f: f.config == "serial_recovery_raw")) +async def test_upload_to_mcuboot_raw_recovery_smp_server( + fixture: ServerFixture, + mtu: int, +) -> None: + signed = signed_image(fixture).read_bytes() + + async with connected(fixture) as cs: + # The app serves the img group before we drop into recovery. + assert success(await cs.client.request(ImageStatesRead())) + + # Reboot into MCUboot serial recovery (smp 4.1.0 boot_mode). + try: + reset = await cs.client.request( + ResetWrite(boot_mode=BootMode.BOOTLOADER), timeout_s=3.0 + ) + assert success(reset) + except TimeoutError: + pass # some servers reset before sending the response + await cs.client.disconnect() + await asyncio.sleep(2.0) # let MCUboot serial recovery come up + + # Reconnect to the bootloader's raw SMP server on the same serial socket, at the mtu + # under test (recovery does not advertise MCUmgr params, so mtu is the message cap). + assert isinstance(cs.endpoint, SocketSerialEndpoint) + transport = QemuSocketSerialRawTransport(cs.endpoint.url, mtu=mtu) + bootloader = SMPClient(transport, cs.endpoint.url) + await bootloader.connect() + try: + # The recovery SMP server speaks img (not echo), so probe with image-list. + for _ in range(30): + try: + state = await bootloader.request(ImageStatesRead(), timeout_s=1.0) + if success(state): + break + except (TimeoutError, SMPBadSequence): + await asyncio.sleep(0.2) + else: + pytest.fail("MCUboot raw serial recovery SMP server never answered") + + offsets = await upload_image(bootloader, signed, max_bytes=4096) + assert offsets[-1] >= 4096 # the bootloader reassembles the fragmented upload + # Each request fills the configured mtu: mtu-1024 moves ~3x the payload of the + # 384 B default (the point of naming the larger buffer). + assert_chunks_maximized(offsets, transport.max_unencoded_size) + finally: + await bootloader.disconnect()