Files
FPGA-Neural/hardware/v1/tools/validation/mac8_tree_p8.hex
T
micheleandClaude Sonnet 5 dc0b331d3e feat(v2): scaffold hardware/v1 frozen baseline + M1 Neural Processor
Begins the V2 Neural Multiprocessor / Dataflow architecture per
docs/v2-description.md, per explicit user request to freeze V1 and
start V2 development, copying from V1 what's needed.

Scaffold:
- hardware/v1/: byte-exact, read-only copy of the current V1 codebase
  (rtl, testbenches, tools, constraints, a representative subset of
  synthesis results, and reference docs) -- verified identical via
  diff/cmp against the live top-level tree before being made
  filesystem-read-only. The live top-level tree is untouched and
  remains the project's "production" V1 (see hardware/v1/README.md
  and hardware/v2/logs/decisions.log DEC-0001 for why copy-not-move).
- hardware/v2/: mandatory structure (rtl/sim/constraints/synthesis/
  reports/scripts/logs/docs) plus the full logging system required by
  the spec (development/architecture/simulation/synthesis/timing/
  benchmark/decisions/experiments/errors.log).

M1 -- Neural Processor (hardware/v2/rtl/neural_processor.v):
- 8-stage pipelined perceptron unit (P_IN=8): input align, 8
  multipliers, 3-level adder tree, accumulator, bias+activation, INT8
  saturation. Genuine 1-tile/cycle throughput, not just a wider
  combinational datapath.
- 7-state FSM (NP_IDLE..NP_ERROR per docs/v2-description.md §6, with
  4 baseline states merged into NP_WAIT_OPERANDS -- see
  decisions.log DEC-0002); valid/ready/data/last stream interfaces
  per §7.
- Bit-exact vs the frozen hardware/v1/rtl/neuron_parallel.v + mac8.v
  + mac_unit.v: 7/7 tests pass (hardware/v2/sim/tb_neural_processor.v),
  covering regular/mixed-sign/extreme-INT8 vectors, both activations,
  a zero-idle-gap back-to-back-tiles throughput check, and an 8-tile
  job -- verified with Verilator (see below for why).
- Real synthesis + place&route (Yosys + nextpnr-ecp5): 0 CHECK
  problems, Fmax 183.12 MHz at ACC_WIDTH=32 (PASS at 80MHz, ~3x V1's
  isolated PARALLEL=8 Fmax of 61.71 MHz) and 176.21 MHz at ACC_WIDTH=24
  (a user-requested comparison experiment, also bit-exact-verified;
  see experiments.log EXP-0001/EXP-0002 and benchmark.log).

Three real bugs found and resolved during M1 development (full
diagnostic record in errors.log):
- Two independent, reproducible Icarus Verilog v13.0 scheduling
  defects (ERR-0001, ERR-0002) that silently produced wrong simulation
  results for standard sequential Verilog -- confirmed via Verilator
  5.050 giving correct results on the same minimal repros. Verilator
  is now the trusted simulator for hardware/v2/ (decisions.log
  DEC-0004); Icarus's affected protocol-violation check was removed
  from the RTL and deferred architecturally to the Neural Director
  (DEC-0003) rather than chased further.
- One real RTL bug (ERR-0003): last0 wasn't gated like valid0,
  letting a "last tile" tag leak into the pipeline ahead of its
  actual valid tile on back-to-back jobs. Fixed and verified.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013xXuuRUWZScuo1DeYJxs3v
2026-09-05 14:06:53 +02:00

314 lines
15 KiB
Plaintext

010102010301040105010601070108010000000000000024
01010201030104010501060107010801000003e80000040c
08010701060105010401030102010101000003e80000040c
b7483466dbcb9526cdd4861542989600000a7c2b000a5814
4815ad15958496bac69368ca9a275a0bfff723b0fff76aaf
ae51d46e25713b1ad5ecaad9299e8191000bbe7b000bdfc9
ef360dfed3ae2d9bf90201eabdb94f6500004cdc00007771
6d45e4cf7242cbd0a8f8fa0d7cea95fdfffe2ae1fffe6dfd
391199224f11253452fad45f542a4438fff04e74fff05bba
67075abf5947d9955b0c7bc62881867d000888a700083696
8a208357a1184f28d0588c25e0d87265ffe8b7f6ffe892e1
931115638e31f7222ada4a82569b073d001cd276001c7169
731f310325856ae736d5faf0ac43f6b3fff28dc3fff26476
2f764e0c36424cd56ddc69a24dfa9ce0ffecdfe2ffeccf2c
3f7e82c0ef5b8129eba9a2a807e72c7cffed50a4ffedb0d8
06b04540b9ffe2f8d21b32b635c7418fffeb9092ffeb655d
7a6e2abd117279d26748b144d75fbf0c0013decc0013efc7
9bd460653c0826f1c0c3a20b115c6eabfffb52fcfffb76aa
b1ce9a34dd6661c7725bb497468b8dafffed19e1ffed3d23
d518c1d2d6d7929513761c0bee8a7133fff6f96bfff75e2e
7195000b0ef33d3454dbaec2612409abffee5142ffee4014
c0f320b6aadfb15c58fc7c645f7ea5c9001d1e98001d78a9
17f25acd3f112e2b0a50912898e4c7a8000efa3d000f03b6
bcf4f55ec369634ae2349f9b849e48b1ffef2153ffef5d7f
94bb2b70a6b6bd7a47c7c98b3c58abf6ffee77b0ffeec2f8
06125f9667a9ed35b3caf85b28848be0fff5d316fff58de2
28e2a70fbdb984b5f3031ad461757455ffe454faffe4d036
3fe63ae2d915e01534d3c1fad65ee7e8000fb011000f884e
6ececdfa2b30df16d31aaed4b655dd3e0006db3d0006b4a7
7392021baa4fd900d7794b8616786cbefffa4a0afff9b5a5
811074997aae0cd6efdafce50995e959000d54a4000cec2c
2908baf8fb17185c9becbd36a325e2450005fec20005eea2
4b41e2013fe6c565f390be2ea9c384c7fffcc541fffce4ac
161db028f0f5805b07197aca3bef0b4ffffd2435fffcd3d0
6a7c39956f0e758d13c388335fbb73220016a21200166856
b4f8d975269d81baf50f2864e451833efff987a1fff9740f
fa9b6bd6837f7e7ab9b40197caed5c2b0003d1e20003e8dc
d04ebcd930dc3dc5b9eedbacb07de96e000af3b1000abace
b72ef1606f97f053c3f73f035995002400085eed0007f727
4fc1480ee648e3d05317bd4815450ed5ffff30aaffff1735
e0f4966f5ac1bc89d1c80b108e805d4800013bad000176cd
c7e71f4ad3b7b9821986c4ec6f683fb800103d9300109007
43d41faae1cce47eff2890933607d8150009b05e0009c0ae
c71419b54020ed7001e230c5a68079cb0016a4980016a146
dc5ec6dbe9560010a97694cc78cad72effe20228ffe1c2c0
fad568a676736debc7f63f75da44141a001763ff00178377
c37cb0cd6f4129b747445b712a4f699d001a8494001aa6d8
278096d2b8fb101ee37038b0a66abdcf001146aa001112dd
7ff9b9c1b1657ecad1521f95069de0fcfffa2433fff9da9f
ddcceb697e44c7899b0cf20e8c60b73e0010c4850010bc4d
772ab23f01ed4d8125f5068f0c2d8e3c000e73ac000e30e1
e13352661fb2a04909e6823c986ddf74001ba4d5001b40d4
c1c2bcdc194ac947351050f00d658d36fff9ac66fff9a860
b76a21a0be48aa62ebafa461af3db86c000379090002cd0f
0261d1b2b0c1f948b460692b49c46aacfff5cee8fff5b0f3
e9c0904fb7dd27b28f3c5ab885482711ffe73f3affe6ccb6
1547eb50f98216058dfd4737ce400371ffe97389ffe97c19
5c56b7101c87a663215aa0b1b5dbe29c0015003500152a4c
62b319bbcf47b51128ac5c080ac7fa65fffb5e1ffffb187e
8126721ad1b97c16b4450fd19a9ba6c7000c9e7e000cd3f4
ce2737533f358361661d0ee72067ac07000a4dd5000a4a7e
2c87a56ba9c1e0c100c000926693b50c001d12a5001cc627
8f181165fed8e84237925802ff7a7755fff80862fff80eb6
b018c5975ae20076508d773b1e8652bdffef5128ffef2b0a
96696d0e93c68585a8eab34f4b6aa1a7ffea49d0ffeaa7f9
564b654626ede20b535a478f7856cb1000182e3a001881c5
dfed96b14627ad18d073479c2d6bca8cffe8f3acffe913b2
a234597ab87321659e2ec0eeb64373f8ffea1c98ffe9fc85
3101f0a525e72c661e767690afe934ce0012e4110012cf30
52616bb1de0ae2840a0e17faeae1a01cfff2979cfff29b09
017c1a554e4598d50c73365b416b3877000aa153000b1eb8
38f9390cd37ff767835832b853e49d71ffef8faeffef0911
40e324027459d0c96e18100dd3d55765000040090000a0b7
b9bc479b044f5c88ad11300695839b97001344e400136b22
398a26a3e06e18bedfae126e09758723fffbb12efffb7b0a
cbb5abd876193e0bc40940fc01f831d8fff6b317fff6d34a
42b51761feb4bce61e9f5d2ce84ff231ffeaa3e7ffea9b50
489911a340c4422339bd494b0beea94dffebe282ffeba4ea
0b28392cf2316542e24558d111a91875ffe3a66bffe3b63e
6669918d6f128b3a6f806272c8d3bb0e00009a370000dd6c
a7c4cbc70273d47153555e620a184647000543bb0005a5c3
9cc907a60f93c630b65295dd03739a470009a87800098637
51cd0222befa74ebe6ca95cd2c6b63eb001b05be001b12f9
687e3c3467638d2620c6f3a330fe7c7bfff6b617fff744e7
871b9634b7f8a0a35057d07eb09b5db7001353b200135f2a
6bcec96e66de4c2f289fe024e043a84400016031000100a9
fffbd0e19af79c3e23704626e310dfa4001470380014852b
ddd414e8c4fdf148c574ebd471a927f5fff2b2a0fff2740c
b0839f0acb195ba0f65f5ca8d254d2e000066b8e00063ad9
c9f59c462a8716b1a414d1144140985b001181b000112e7d
141b1944e7bdf2ea4fdaf5838657c8adfffc118efffc0464
93a3b9e21d8b6b3b06bb0941c5038bb1ffffde3a00003da2
4204dde6c6bce1adf1f80b3f86c701c1001b5ec3001b9ae6
0af0188fc7f63b343665190c1678b0f0001b9404001bbccc
5504e54025326065298c223152247dbb0005ccd20005d245
c2b882bdbf2aa9e751b9ce1b3789e3fbfffa067bfffa01fd
8166387c3465a820318a96eb32229c460003096e0002d8e0
9d225798be0e8481dd0b46eaeaa218730015ca0b0015decc
6896242717a3cc2d6c3fa59b3c2a2723ffe4f0aeffe50743
f2b40b0458a29c4e95d9bec686d3994cfffad160fffaad0b
f48198675fc8c34cfb1c3665f204fa4dffee2577ffeded6b
267abbba3a95d4a83853830e03f43b94ffe8ac83ffe8baa9
26816495be64663ea586b4456215438400104c0400100cc2
5932e501bd3a2b06e7d9c32950ec9c8a000578ab00059da8
aef9f53b15bf7cfbb4e4ff43fa3720d1000ead82000ea659
393c857a359571a58271dee965b29f65001632b200154d83
6366e14b9f4ec873bbe05138bb0cf8560004a47b0004a08e
59de6c333352a82f34196712144364f9ffe2e365ffe2fc17
03326f4287af8cf9e2cb5bf59e972431fffce5ccfffd5dd8
44b031dbd65436133f2bc04cb9e63b730005b1680005a499
f90b283f8abd2e617f6d7bd3d1e6f114ffe6c316ffe720ff
50641c4d226cfd156af6083e1652766cffebb325ffec1f8a
bbb217cd36096e5ac86f326341032422ffe2202affe259c6
94de250907cbcd843347eaafe7686669ffecd352ffed2f01
1cdd3bfdcd1eb5207e0dbabba81ddf4efff0bcabfff0ae0a
7674f1b8731a569ef14d18a00e4fab4b0004794a00047ba4
629f8445178b68aa3b14780b64fdae56000434f90003ae04
2232966739645ab5031fef6600e5fc33fffa4e5bfffa1f0a
539d8bc5e825c28f064ff124af4a8f34ffe71026ffe6f44a
f9d0ae2e24fcf0cd00a4f9a08bdcace7ffed3e5cffed4ed8
16bf4181b1cb4c1e88741fcd2de58c6cffe215a2ffe196d4
9ccf8b8deb66fdc266e909a08c08f840ffe8c8a7ffe8f68c
4f04fb983f175c0251f2f5f960ad6504001599230015811b
87782ca499757f68facb2e4b7756dc34fff54434fff52f93
e7af192720bd174cf91cfa3e5db1fe74ffe5130effe4fd67
ce233906f7fd214de2f562a7b53c3174ffebcea8ffebb708
bca8d2e7520399b177060a7fb6ebb6e9ffee2205ffee731a
8b90fb5630f15e7dc0f5382cfbcce5d9fffb30e8fffb9f01
2640d8dbb3d30a991daa9ecb888cc934fffa8419fffad2a4
a63dc30fbac127c7193dd17f15f260c4fff3d4c9fff39b4d
946f50ec1023319003212c1c29f4253efffe4868fffe0c51
03335ff4a956b90cd644c59b4cce80b1ffebf327ffebf385
c6a7c433712b03fe305cc0b0ac2b28c50003c03f0003e956
27f237587a3fd308fe5ea0d52fd211900011ad6c0011da52
e56ed41aa68c2d8834db17a3184cd59c000d66d0000d727b
62994ae17b180482441cc4720a6e2aa1fff456bdfff41157
755a8ad0918d693ef848cb4a03146518ffed8634ffee08e3
50eb182ab845a7195600ab5b97e44ccfffe546b6ffe506b6
f3790b75211c1ada72262c58c824436bfffdd484fffe0753
314f80096d7aced6e0b386b1772f14090015cb0f001657a7
9a87153463862b7340a5a75ec31745c5fffa7db4fffa4981
778d71d2da87b726362334b3428d692d000abd9d000a6787
ef850e3b5ab9b8b0fb2639039d7f3a2effeefff6ffeee221
232947efe675728277512e2dfa868a3b001d80bc001d5309
8636eecb76b0fb4e3706f941b1d473f3000616200005e0f8
f2935b6e5623b9783fb462394f3c9d490002a5430002b634
cd443203803bf6feadc2fc2eb5b75616fff32dcafff33391
377143a0ef27ca7606005e75181b8351ffef7e05ffef67a2
55ade9241882593eceed313267b735980000992c00005e80
ceed591380bd78b4949ae63db7311287fff8a49ffff8bb2b
e259812fd85d80d85c8f8bfd259f3e4c00166be600162cc5
3d0a9a7420c552e675e6d034105c728dffe1aecaffe13028
ab78a726ad0a52e5867f6d718085e017001dd7ee001dc533
ef286f9c9049c543044174687dfb6ed20010423c000ffec6
3ad04a1fdbc29ac2b7840bf43f117015ffefc322fff01319
60dc4ac38aadb96d0647e2cce88b4abffff0de3bfff0c710
798ba083b24a31a7eb3056ac2aad4acffffdc4d0fffd58de
37850ab05453191f70707ab0f708dcc100033af300034f1d
bcf250a377ce3c755a1b41b514400646ffe195ecffe17dd9
55ef3a16173a1aac06f36ce99d68225800099c29000971a4
48dd3f091a221c0a332379fc33588ad8ffed5a9fffed8097
d62507012e68669aa3d6c4ce53d1f9effff6cd53fff6bd88
bf6552a08ce02879f29df8b6250ce282ffe3ea2effe3eb6b
14e7a8a7c082118af4065ae66bb627860016f3090016ec67
cb5e66cedb29effa191c03cb362098affff2a153fff29e2f
033a1a950e741bef813584afbe3bcc5200136fa300135713
35b83866e0a478ea565a17cc91d44253fff9dfeffffa2a91
a3b2e2d467440fccf003cbd6692669720010e5d40011667c
94f230ed09843b0ca98132fabfd9ee63fff837b3fff86561
a8c0635d9360606284ad53849b35af11fffdda24fffdf5b1
914d181d43cf2b9e1e565758d39b95a3000a478c000a6c34
f9bd85ea6cc76aa933329767408eeac5001532280014cac6
deb9c9b1ed4e1946114c2b4999a66b950015e9f200160e31
04ddb3ded7a90311a47ac60bde437d42fff5b8eefff5b9bc
f3ec704da2535324d8758cacf95e7613000f42e7000f6cc5
84c37268c407fccfa3c9e4f77542ae46ffeb03c9ffeb6b7a
e902db12fb364e8d5f38a2fc752cbeb7fffc0aa3fffc20f1
cae028e53409288138e0555b94896825ffe55c3bffe5a532
fef358ec43d67cf5622a83b027b1d82dfffcd3cffffce0ca
0a053117ead48bc73c486f142665232b000057c50000a89e
1779e5215c316779e0b0e887497dd193000fac1d001042cc
91b75fb91ea20265ac1e40ddb1a5130effea9fb7ffeaa552
dbd6cac1d3e74496d22c74a1199e1341ffeebfc4ffee83aa
6484122c02dd089f3752232c108a5583000ef2d1000ea8ec
2794431374116820c869dc26d47052a1ffe8eebdffe8a9f8
42da9b6cc27932f2bc8576b18d5274490007b61700075a25
5b9b15df3a43d7c78f40345cc2883134ffe25b3bffe26a62
b368e7f92ed0b631dd262c35d2418f2400034b120002fe07
c829ce6aad13ddf6a7f0b9e441c63bcd000c0727000bd789
4567d0e8ae382d60c01cc59642bbcf40fff26ae8fff27d7f
65a671a01470a44f91f77d37425ef3dc001a4055001a17a1
fddee7a9390c343b5f9829996552b965ffeaf5c5ffeada92
70b87bfa6e52079fc4460ea763112b55ffead4b1ffead278
b6277d9d8bef3aef164aedca3d03a5fffffacd43fffaa101
df6c71731cac38f21355b73273b16654fffd9740fffda5df
efbf6909cf6446d2ddd8ed95f1854949fff65671fff6682a
5ada9db6ebb22ff3a3bfe61e5bf6de78fffe8789fffe9be1
b3901ebafe80fd3510d6158f3258b75e0012318e001235e8
1c9917b5b6c9ffa3f378d67d75b30b55000103dd0000c7fb
2dc85ea9cee033ca2e24bd97b5866bbfffee80fcffee7d36
d072437559782912a143afc24a3fa445fff10b2dfff13531
4fe4a2cb672db8c8156fc84816528b37001c39a8001c4d99
94f1e5f9f4e61dfe33da293a340848c80014315300142cfa
87d653da7a20cfd8ef154c3a615e600b0010c79a00111d9b
453de9207bf11328545f8b31cfdbb7c00011deab00120a1b
c3dc309b89a8d82d4ec2eca7c35619e20003762c00036a54
7b82544f145637d6f6f22d59764ccd48fff8144dfff81442
3751cbaa579062248fac167b8114ec7bffea43abffea6ab6
6e0aea5f38eae5544ccf251bc8db74eb000b3c51000b1eb6
f636a368c55f1b1c9664b4b4e60a0862000344400002f89f
d6edc920fdcd92e498e7eaa37cbdc569fff244cffff2272d
f6dea61c2754dfedbf228b183384df02fffa913afffa6b65
3ee407b217e95227e87414ed0f95cb3cffe9a5b7ffe9882d
06a247226e2381e403832ddfb777efc7fff57f3afff57df8
d00022fcaf35cb061c1e493caea79a46fffd76a8fffd791f
5a2bc58f9a38625eb1caa1ac64c6e7fc00124ba500129c0c
76d8414f5e8d714e7acb0275f3c86f8fffee877affee3ace
8e2eaa422098bb450b2b051c41704fa4001b6fe7001b2817
409e7e95229c8b95752a5892065ea82c0011a85900115f44
8b9c7d11ccefa4d9fa929f2504dec294fff13d40fff192e8
eb08039624717eba4e5ff34e0b211ceffff63550fff63965
fa515245fcf591aaf05a8a20b06a5149001bea7b001c05be
175fcd87e324395316682efedae9e0bcfffe91bffffed548
030083af7d20ded073b50710c535bce7ffebed25ffec03de
f1d6b346756249557e8713c2b1fdca0f00107ae100106aeb
71280cdf1ccce2fb2c642450566557de000170f70001aec9
4e82e302fcc656c8d1287dbe9ca8acd5000e8463000e54c7
c632e830e0b489aa6e9ac4973d2c641a0007b89b0007dbad
60f9cfe84bd046708942d466401bb5ce000bdeb9000bd671
5f081111e9417406bd9546d5764dd250ffe9a639ffe9cc90
8f13dbc7cd09f3d9313ff4e5d2465651001428500014444f
1b2eba80265c8d98e1fed0b35dcce940ffe5fb3dffe65581
5ac7442fc82ac66f098e399c6e3fb4fb001d151f001ced83
cae6f36567cd8caa3812749e4fff9b2bffe5dc9bffe5b5ab
c6f3ff6084c91c035e8e28164d4be2e9ffeda203ffedb262
d686ca96df340791934db0010fa8ebeb0017bd670017b982
7339786ae66a19855e2ba71c87709df9fff3ba3afff3c291
49523c1d1c49208b47f36c5ff3998ccdfffc0b35fffc638f
22dcffda462bd2258c0a97773a6275b6ffeee4e6ffeea46b
76dfa247cdeb846a57e2c57c7c5d778800091ec0000894cd
b2580eb1665e3728557c839097c05fc9000538560005acf3
b7cc4ac52f93627b3c19614e0b791ed8ffec478cffec8452
40a9e4cce211bbb58026aea827b45a9e0010bcc300109a14
f363168c25a8d0d3160a5ea055ee58a7ffe39321ffe338e4
26b926e992b876e8ed4278599a386577ffe7b894ffe7fbf5
d6d50ac33ff99775f298a0dccbb1ee25ffe30d95ffe3017c
c7d4bdc94a344bb7f763821e7f3005cfffffd9c3fffff035
af5a8628a5c09fc32aa6e24a837a2a10fffd4210fffcf001
ab8ac0f6f17fcf9a18a26a0d807a7913ffe33b55ffe339a5
5ca5d10b891a765f0cb225bee87c8271fffabcaafffa6935
9ba2b6ce1d9a7533f6c1c3caadebfc7e0002a13a0002f4b0
5789153690237e2688942b805575a0e3fffd18f2fffd472c
4b852a2192aa0a6aabdc6f82d9ee78de001b3c42001b0edb
e9289e016228f6b48b421301a9d2df380005235f00051c00
10b0aa90b58309a9d8abeed8087fb8a4fff706b2fff776d2
59f6232e0b63a69475a67c36f8e4e63dfff3961afff3aed7
3766b0e18dfe9e50fccbf8a6ca48b40b000cefb7000ce2c7
3122f997dc8fd1ddd354b07d9e011acdfffb7e6afffb62b8
9f84dd71736442842cda1771289e6518fff789abfff7b3ef
38b83f0ed769743d5d74ca2dd99ac132001a9e14001ac07b
982fe5a1e5de08a630f4d1dab69f1260fffee12dffff0064
72295afa25e39589c6ab41c61515dd78001dede7001e2172
025dd6549d6f49ccbcce8fb88485168cfffef630ffff0e0d
71bb53d45ff8253790a82559ddbc9e5affec9981ffec8bf8
6d91eb73ce5674efd1c4954b8ae96531001b89a9001b4211
d6a42acca07fe81b149b6137bfd59b43ffea12fcffe9e4d3
823785a842d0bc686730ddb2e3c884bb001d79ff001da6f3
347e44dc56e3347615606f6bf4fd2a2e000ce2ed000d3f24
e8bd3bca1328e51fe561b12428279eb0fff2facffff303b9
6a91ba12459fbccd12fb00429065ea90fff7287dfff6c618
906767fe48cebaa9214bb5c6355fe251fffc8320fffc83d2
f325fa3235d3789333fcc63159f16fa8ffed7727ffed006c
efb850605a347e2948f932fa0d859036ffe3b69fffe3deda
83ed6a54bcfc9ea33ab06d4a9361dbfd000ce23d000d177a
1d58e66bf7f44fadd4590490158d42a4001603f50015b7ab
2698043ee6176a07a7133a54b4266bac000f9669000f668a
d04a625ead2bedf952008d9e2e551fb9ffe28b43ffe2c6a6
85b7edecd24b819ba9d349141f11ef34ffea49cbffeaa695
a6019601595263cecc658effcf7ea82b0015ae4400157bb4
670de80e82ac2689fc5076fe7b687f700000fd7300018068
7761858719b008971ba24237979830ca000b708d000bf17b
c88949769c319df934fbcd3a560b7c82000a5c83000a41da
07d2082c17e5fced450abb3c44869517ffed7254ffed38d2
ec1f82e2bc4ac91f2542825ff34a00b6ffe9008effe8c99b
76e6453dcd0a84951f81050d9a04ad30001490730014a676
86e413b844cf099da91fdf799e59ac16fff5047afff4b88f
82c549a5cb06a36f62b3946fd9a6b0380019bae800194456
5fbcb5cc39d6ee4d6a18bab1ee2fe9a6ffe7dc4dffe7e7db
eec7983fefc2588889b714f504f0537e000a74db000a83d0
ed32593452602f57747c5374115bff0f000576c5000617a4
7dbe69d3a592966ba3be2c700642cec70009d99f0009d9a4
93f2c7e49586cd774deab8c9e31a385dffe60c79ffe64e34
481742921c2e831e785a3278925519a4ffe60e97ffe60333
9b717e8827ddc3c340646b0a636e7b610015b0ce0015c8b0
4a74cfa4572a35bfc270733b6794e72b00127524001278d3
c20a6258901d05934a89250ca4498b750000d7ce000077e2
ae0c9595b16a80f5bef56bfb10b6da96fff27f56fff298dc
e1cd28658ddf399e5e58498802c6ded9ffff604dffff7215
4d90cc91e659d22777c125acea09866d0017118b00169836
a38f5226e5b4864c7d57b7a8c56754afffefd0b0ffeffaf7
93249eb07fb94c7ca1719d502bdf347c0017c83e0017a3e7
bf89e99ee41a5289900b72af1b35f6f1ffed859cffed60f6
4610fecf337e89567b1f1e182801c33b00099b35000994e5
808080808080808080808080808080800000000000020000
807f807f807f807f807f807f807f807f00000000fffe0400
808080808080808080808080808080807fffffff8001ffff
807f807f807f807f807f807f807f807f7fffffff7ffe03ff
808080808080808080808080808080808000000080020000
807f807f807f807f807f807f807f807f800000007ffe0400
808080808080808080808080808080804000000040020000
807f807f807f807f807f807f807f807f400000003ffe0400
80808080808080808080808080808080c0000000c0020000
807f807f807f807f807f807f807f807fc0000000bffe0400