From 67962af47edb9f61a816104b03599d495d73b6ca Mon Sep 17 00:00:00 2001 From: BinFlip Date: Wed, 12 Aug 2026 20:07:29 -0700 Subject: [PATCH 01/39] test(fuzz): commit the crash corpus and widen CI coverage Adds the 72 minimised crash artifacts. `test_load_path` now fails on a missing or empty sample instead of passing silently, so the regression suite can no longer go green on a checkout without the corpus. CI drops `--lib`, so the integration tests run on Windows and macOS too. Doc tests move to their own concurrency-capped target: each fenced example is a whole-crate fat-LTO link, and one per core exhausts memory. `.cargo/config.toml` applies the same cap to bare cargo invocations. --- .cargo/config.toml | 15 + .github/workflows/ci.yml | 44 +- CONTRIBUTING.md | 4 +- Makefile | 50 +- README.md | 4 +- dotscope/src/analysis/cfg/graph.rs | 148 ++++ dotscope/src/compiler/codegen/coalescing.rs | 276 ++++++- dotscope/src/compiler/codegen/mod.rs | 639 +++++++------- .../src/compiler/passes/constants/tests.rs | 117 ++- dotscope/src/deobfuscation/config.rs | 123 ++- dotscope/src/deobfuscation/decryptors.rs | 111 ++- .../src/deobfuscation/passes/delegates.rs | 132 ++- dotscope/src/emulation/memory/addressspace.rs | 782 ++++++++++++++++-- dotscope/src/emulation/runtime/appdomain.rs | 72 +- dotscope/src/emulation/thread/state.rs | 95 ++- dotscope/src/error.rs | 154 ++-- dotscope/src/metadata/typesystem/registry.rs | 332 ++++++-- dotscope/tests/fuzzer.rs | 108 ++- ...h-00556c4399794f6db44ffce728effc1ec3cd2fa1 | Bin 0 -> 47370 bytes ...h-05e5dbbed85fdda41372c73d6e7eb80ce9a91546 | Bin 0 -> 475 bytes ...h-0ba1fe0ad577d8a505b2e34a29ecbec5d695cc81 | Bin 0 -> 1191 bytes ...h-116ecc73c01734816489057f0c6081c787bd5b1d | Bin 0 -> 390 bytes ...h-13388014188607320f61641fd611342ff65a3e8c | Bin 0 -> 1103 bytes ...h-13dfad7060839681c6f7c6bf1fe6acac3ebaa886 | Bin 0 -> 385 bytes ...h-1cbe9ef6db3eb6a372c269cb4c8e751565164a0e | Bin 0 -> 1839 bytes ...h-1f924b9d1057f0e1957622ed59233e673aa72dff | Bin 0 -> 567 bytes ...h-22020b57bdfbba9c10cdfcde93865317b807b3b3 | Bin 0 -> 731296 bytes ...h-272d0d545dbf696680104d5c85937babf4faf76e | Bin 0 -> 964 bytes ...h-291138423e8558b6efce8169b74a82a0b8cabfcc | Bin 0 -> 353 bytes ...h-2ac2ad93bd33102f2178c81b4df2eb486a577054 | Bin 0 -> 507 bytes ...h-2d515faa49c111a9235c6bd2e8d4fb4101a3e961 | Bin 0 -> 2022 bytes ...h-2e514684c4426d239b3311528e7b288e9628f80c | Bin 0 -> 139711 bytes ...h-36dc9407db12eb3dc0c8416cf2e05702860afa13 | Bin 0 -> 1503 bytes ...h-37862deb65bdd4829ef254d5aabea5612f6453cc | Bin 0 -> 2015 bytes ...h-3ae512e97f3e229aca9592be6dff56336cb1e91b | Bin 0 -> 1665 bytes ...h-3fef7486fe48c8a62581600ec54c286fe0a8eac0 | Bin 0 -> 379144 bytes ...h-43dfaf4644a738c2588a689f8f7ee6e376fb2efa | Bin 0 -> 385 bytes ...h-47a66e432ec761640198d3085666a1469c9cd220 | Bin 0 -> 292616 bytes ...h-47d8ec47286d2cbd3b19de0fa1794680d415946f | Bin 0 -> 375 bytes ...h-481e4a026aa58f360df82d0468166082f7952209 | Bin 0 -> 396 bytes ...h-492bc73afc8bf8152c4a0709cae6e4027a994546 | Bin 0 -> 365 bytes ...h-4cd7b2fbf6ea790bb758ded03016d66bb16ce806 | Bin 0 -> 1407 bytes ...h-57b8789c285f2b0780cf595b1d61d1f35bc58498 | Bin 0 -> 960 bytes ...h-58f1bf8fadb1dd341c2329edfd03a8c25ef0cdea | Bin 0 -> 47370 bytes ...h-5b1b3c4c5502b086760d7a35cfe6068aa59cd7d8 | Bin 0 -> 619 bytes ...h-5dd5b021b2fb26393da9782983b4885bcf44cd03 | Bin 0 -> 826 bytes ...h-5f21342c1a5babd06401940c3e0c7ba697b51eb3 | Bin 0 -> 379144 bytes ...h-609a2f11943a71d2662c76520d5a34034c009aee | Bin 0 -> 396 bytes ...h-6302bd3c8e304b6158cc34d058b52e13137914c5 | Bin 0 -> 16384 bytes ...h-6b996e5a1942c4b4d0156dac6616e087aff8f761 | Bin 0 -> 14347 bytes ...h-70f956eb1d3a16cc15785e0a891c560c92c7e510 | Bin 0 -> 1225 bytes ...h-72354448461017f512594a24b711e881977c1113 | Bin 0 -> 1607 bytes ...h-724a402d6aa00572bcee97f9fdb338bcdc6eb23a | Bin 0 -> 1111 bytes ...h-734666e7bc4dfe6002caeb33c6601723247f240a | Bin 0 -> 375 bytes ...h-775cadba90b566b8446fd4aaecb6467ea597f573 | Bin 0 -> 362 bytes ...h-7c620960bc72cb2167598cdca54b3d28888c7a86 | Bin 0 -> 47368 bytes ...h-8ad3ddcf41569559112e56d4ca908642cb0a75aa | Bin 0 -> 378 bytes ...h-8dad878902939c3ad4373e17c97a74445ab9e049 | Bin 0 -> 248072 bytes ...h-8f4840e448bccf840fea0fdd76317319a7aaadeb | Bin 0 -> 963 bytes ...h-95896fa8229590047497f1c02b31a794911a36a3 | Bin 0 -> 1065 bytes ...h-96923484c1ec0e71328d1f786bf51b175a125357 | Bin 0 -> 791 bytes ...h-96c8c4e1b54ccef51eadda2752884c782cc87022 | Bin 0 -> 494 bytes ...h-9a60e737bf46c3f61b120c3b643557382404b910 | Bin 0 -> 2108 bytes ...h-9ae6356f0d91cc40154facd72ec1dfd5aeedc91d | Bin 0 -> 1918 bytes ...h-a34eb04384b3ab29899faf88935bbabeb92bc749 | Bin 0 -> 15245 bytes ...h-a445a250d9cc0b18fd88b1e5cb777e685f9aebda | Bin 0 -> 1139 bytes ...h-aa39a9253467829964c361ec8ccc7be6f938a9d2 | Bin 0 -> 450 bytes ...h-acf1e2a5700b44a77491e91d174d4a5bae96d541 | Bin 0 -> 1968 bytes ...h-ae5c3c6988a583b075d555a22fd34b4a45cbbad4 | Bin 0 -> 1217 bytes ...h-b07c102a966113251346ee9faa80908b3078baaf | Bin 0 -> 411 bytes ...h-b66bfd4e8929b2967b5c20285b29af9d8097a642 | Bin 0 -> 1630 bytes ...h-bc64895e6f5519e64b5fcf7a5c2d6bb8d7c5a577 | Bin 0 -> 1806 bytes ...h-be7edd4580c57b558efc804f9639901595d33500 | Bin 0 -> 1610 bytes ...h-c6a28afe5b093f432e61ff0cbc2eb632b25c191a | Bin 0 -> 702 bytes ...h-d386eb3edca5260c4693324b253918a1bc5d07dd | Bin 0 -> 1026 bytes ...h-d3a715870e5eeaa6676173d8d80193760eebc568 | Bin 0 -> 830 bytes ...h-d4868fd455a55809b1afd691a5c6a18180c93eed | Bin 0 -> 398 bytes ...h-d55961c78aaa23f88c5ea032f1f63d752940c885 | Bin 0 -> 408 bytes ...h-d5a7ab596aee472c294cf8c88a079820140c2bd7 | Bin 0 -> 1596 bytes ...h-d90f43812c1a89f24f21e0a3c864b654d017f060 | Bin 0 -> 960 bytes ...h-dc1a9e462f45d6ce50f96b443f5940d414dfb3bf | Bin 0 -> 47370 bytes ...h-e49977f29a211ed3f4fbea7b2b9f8e30e08683df | Bin 0 -> 3589 bytes ...h-e59d32d275d742ea4643d6d53a248a92f9c772e9 | Bin 0 -> 954 bytes ...h-e5f06d1b74cdefbee7d3fac44ccf747ef2dc8385 | Bin 0 -> 1440 bytes ...h-e9567af33b16b520b7de944e87ca5ab22ac541ea | Bin 0 -> 1141 bytes ...h-ee0e9763c779daefdaae371ebe356938b39c9f9a | Bin 0 -> 2211 bytes ...h-f286192c226474e7c760aca590f93351a7b109df | Bin 0 -> 379144 bytes ...h-fb9b72e6b88bc3866a5306bee5245f8e2b975cfd | Bin 0 -> 438 bytes ...k-b96355f49d7918e856039d2c998de850e47ffdf3 | Bin 0 -> 16384 bytes ...m-21104105496866b7eea2ba90393fbfd44692b6a7 | Bin 0 -> 379144 bytes 90 files changed, 2604 insertions(+), 602 deletions(-) create mode 100644 .cargo/config.toml create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-00556c4399794f6db44ffce728effc1ec3cd2fa1 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-05e5dbbed85fdda41372c73d6e7eb80ce9a91546 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-0ba1fe0ad577d8a505b2e34a29ecbec5d695cc81 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-116ecc73c01734816489057f0c6081c787bd5b1d create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-13388014188607320f61641fd611342ff65a3e8c create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-13dfad7060839681c6f7c6bf1fe6acac3ebaa886 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-1cbe9ef6db3eb6a372c269cb4c8e751565164a0e create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-1f924b9d1057f0e1957622ed59233e673aa72dff create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-22020b57bdfbba9c10cdfcde93865317b807b3b3 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-272d0d545dbf696680104d5c85937babf4faf76e create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-291138423e8558b6efce8169b74a82a0b8cabfcc create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-2ac2ad93bd33102f2178c81b4df2eb486a577054 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-2d515faa49c111a9235c6bd2e8d4fb4101a3e961 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-2e514684c4426d239b3311528e7b288e9628f80c create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-36dc9407db12eb3dc0c8416cf2e05702860afa13 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-37862deb65bdd4829ef254d5aabea5612f6453cc create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-3ae512e97f3e229aca9592be6dff56336cb1e91b create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-3fef7486fe48c8a62581600ec54c286fe0a8eac0 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-43dfaf4644a738c2588a689f8f7ee6e376fb2efa create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-47a66e432ec761640198d3085666a1469c9cd220 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-47d8ec47286d2cbd3b19de0fa1794680d415946f create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-481e4a026aa58f360df82d0468166082f7952209 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-492bc73afc8bf8152c4a0709cae6e4027a994546 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-4cd7b2fbf6ea790bb758ded03016d66bb16ce806 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-57b8789c285f2b0780cf595b1d61d1f35bc58498 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-58f1bf8fadb1dd341c2329edfd03a8c25ef0cdea create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-5b1b3c4c5502b086760d7a35cfe6068aa59cd7d8 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-5dd5b021b2fb26393da9782983b4885bcf44cd03 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-5f21342c1a5babd06401940c3e0c7ba697b51eb3 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-609a2f11943a71d2662c76520d5a34034c009aee create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-6302bd3c8e304b6158cc34d058b52e13137914c5 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-6b996e5a1942c4b4d0156dac6616e087aff8f761 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-70f956eb1d3a16cc15785e0a891c560c92c7e510 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-72354448461017f512594a24b711e881977c1113 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-724a402d6aa00572bcee97f9fdb338bcdc6eb23a create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-734666e7bc4dfe6002caeb33c6601723247f240a create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-775cadba90b566b8446fd4aaecb6467ea597f573 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-7c620960bc72cb2167598cdca54b3d28888c7a86 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-8ad3ddcf41569559112e56d4ca908642cb0a75aa create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-8dad878902939c3ad4373e17c97a74445ab9e049 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-8f4840e448bccf840fea0fdd76317319a7aaadeb create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-95896fa8229590047497f1c02b31a794911a36a3 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-96923484c1ec0e71328d1f786bf51b175a125357 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-96c8c4e1b54ccef51eadda2752884c782cc87022 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-9a60e737bf46c3f61b120c3b643557382404b910 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-9ae6356f0d91cc40154facd72ec1dfd5aeedc91d create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-a34eb04384b3ab29899faf88935bbabeb92bc749 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-a445a250d9cc0b18fd88b1e5cb777e685f9aebda create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-aa39a9253467829964c361ec8ccc7be6f938a9d2 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-acf1e2a5700b44a77491e91d174d4a5bae96d541 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-ae5c3c6988a583b075d555a22fd34b4a45cbbad4 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-b07c102a966113251346ee9faa80908b3078baaf create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-b66bfd4e8929b2967b5c20285b29af9d8097a642 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-bc64895e6f5519e64b5fcf7a5c2d6bb8d7c5a577 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-be7edd4580c57b558efc804f9639901595d33500 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-c6a28afe5b093f432e61ff0cbc2eb632b25c191a create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-d386eb3edca5260c4693324b253918a1bc5d07dd create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-d3a715870e5eeaa6676173d8d80193760eebc568 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-d4868fd455a55809b1afd691a5c6a18180c93eed create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-d55961c78aaa23f88c5ea032f1f63d752940c885 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-d5a7ab596aee472c294cf8c88a079820140c2bd7 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-d90f43812c1a89f24f21e0a3c864b654d017f060 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-dc1a9e462f45d6ce50f96b443f5940d414dfb3bf create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-e49977f29a211ed3f4fbea7b2b9f8e30e08683df create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-e59d32d275d742ea4643d6d53a248a92f9c772e9 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-e5f06d1b74cdefbee7d3fac44ccf747ef2dc8385 create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-e9567af33b16b520b7de944e87ca5ab22ac541ea create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-ee0e9763c779daefdaae371ebe356938b39c9f9a create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-f286192c226474e7c760aca590f93351a7b109df create mode 100644 dotscope/tests/samples/fuzz-regressions/crash-fb9b72e6b88bc3866a5306bee5245f8e2b975cfd create mode 100644 dotscope/tests/samples/fuzz-regressions/leak-b96355f49d7918e856039d2c998de850e47ffdf3 create mode 100644 dotscope/tests/samples/fuzz-regressions/oom-21104105496866b7eea2ba90393fbfd44692b6a7 diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 00000000..9a43f475 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,15 @@ +# Memory guard for test harnesses. +# +# Doc tests link one binary per fenced example, and `[profile.release]` sets `lto = "fat"`, +# so every one of those links is a whole-crate LTO job costing gigabytes of RAM. libtest +# defaults its concurrency to one thread per core, so a bare `cargo test --release --doc` +# on a many-core machine starts dozens of them at once and takes the host out of memory +# before any test reports. +# +# Capping here rather than only in the Makefile means the guard holds for anyone who runs +# cargo directly. Cargo's `[env]` does not override a variable that is already set, so the +# unit-test run — which is cheap per test and wants every core — opts back up to full +# parallelism by exporting `RUST_TEST_THREADS` itself; see the `test` target in the Makefile. +# An explicit `-- --test-threads=N` also still wins, which is what `make test-doc` and CI use. +[env] +RUST_TEST_THREADS = "8" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 336a41d7..a989bbbe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -94,17 +94,19 @@ jobs: - name: Run tests (Linux - full) if: runner.os == 'Linux' - run: cargo test --workspace --release --lib --features z3 --verbose + run: cargo test --workspace --release --features z3 --lib --bins --tests --verbose - name: Run tests (macOS/Windows - skip expensive tests) if: runner.os != 'Linux' - run: cargo test --workspace --release --lib --features z3,skip-expensive-tests --verbose + run: cargo test --workspace --release --features z3,skip-expensive-tests --lib --bins --tests --verbose - name: Run doc tests (Linux only) if: runner.os == 'Linux' - run: cargo test --workspace --release --doc --features z3 + run: cargo test --workspace --release --doc --features z3 -- --test-threads=4 - name: Check documentation + env: + RUSTDOCFLAGS: "-Dwarnings" run: cargo doc -p dotscope --all-features --no-deps # Ensures the crate compiles and tests pass without legacy-crypto feature (Linux only) @@ -128,7 +130,7 @@ jobs: run: cargo check -p dotscope --no-default-features - name: Run tests (no default features) - run: cargo test -p dotscope --no-default-features --release --verbose + run: cargo test -p dotscope --no-default-features --release --lib --bins --tests --verbose # Fuzzing on pushes to main or PRs targeting main fuzzing: @@ -154,19 +156,41 @@ jobs: with: key: fuzz-quick - - name: Build fuzz target - run: cargo +nightly fuzz build --release cilobject + - name: Build fuzz targets + run: cargo +nightly fuzz build --release working-directory: dotscope/fuzz + # Every target gets the committed crash corpus. The inputs are PE-shaped, so they are + # directly meaningful to `cilobject`/`assemblyview` and act as structured starting material + # for the blob and body targets rather than starting them from scratch. + - name: Seed corpora from committed regressions + run: | + for t in cilobject assemblyview signatures customattributes methodbody emulation; do + mkdir -p "dotscope/fuzz/corpus/$t" + cp dotscope/tests/samples/fuzz-regressions/* "dotscope/fuzz/corpus/$t/" || true + done + - name: Run quick fuzz test - run: timeout 60 cargo +nightly fuzz run cilobject --release -- -max_total_time=50 || true + run: | + for t in cilobject assemblyview signatures customattributes methodbody emulation; do + echo "::group::fuzz $t" + timeout 60 cargo +nightly fuzz run "$t" --release -- \ + -max_total_time=40 -timeout=25 -rss_limit_mb=2048 || true + echo "::endgroup::" + done working-directory: dotscope/fuzz - name: Check for crashes run: | - if [ -d "dotscope/fuzz/artifacts/cilobject" ] && [ "$(ls -A dotscope/fuzz/artifacts/cilobject)" ]; then - echo "Fuzzing found crashes!" - ls -la dotscope/fuzz/artifacts/cilobject/ + found=0 + for t in cilobject assemblyview signatures customattributes methodbody emulation; do + if [ -d "dotscope/fuzz/artifacts/$t" ] && [ "$(ls -A "dotscope/fuzz/artifacts/$t")" ]; then + echo "Fuzzing found crashes in $t:" + ls -la "dotscope/fuzz/artifacts/$t" + found=1 + fi + done + if [ "$found" = "1" ]; then exit 1 fi diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9de019b3..20939f25 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -151,7 +151,7 @@ cargo fmt --all -- --check cargo doc --all-features --no-deps # For extended fuzzing (do this locally, not in CI): -cd fuzz && cargo +nightly fuzz run cilobject -- -max_total_time=1800 # 30 minutes +cd dotscope/fuzz && cargo +nightly fuzz run cilobject -- -max_total_time=1800 # 30 minutes ``` ### 4. Submit Pull Request @@ -188,7 +188,7 @@ cd fuzz && cargo +nightly fuzz run cilobject -- -max_total_time=1800 # 30 minut 3. **Fuzzing**: Test with random inputs ```bash - cd fuzz + cd dotscope/fuzz cargo +nightly fuzz run cilobject ``` diff --git a/Makefile b/Makefile index c75d3ec5..68337ba1 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,31 @@ # Makefile for dotscope development # Provides convenient commands for common development tasks -.PHONY: help build test clean fmt clippy doc bench fuzz install coverage audit +# Doc tests link one binary per fenced example, and `[profile.release]` uses +# `lto = "fat"`, so each link is a whole-crate LTO job costing gigabytes of RAM. The +# harness defaults to one thread per core, which on a many-core machine means dozens of +# those at once and an out-of-memory freeze. Cap the concurrency instead; override with +# `make test-doc DOC_TEST_THREADS=n`. +# +# `.cargo/config.toml` sets `RUST_TEST_THREADS = "8"` so that guard also holds for anyone +# who runs cargo directly instead of going through this file. This default matches it: +# a value above the config's guard would silently defeat it, since an explicit +# `-- --test-threads=N` always wins over cargo's `[env]`. +# +# Unit tests are cheap per test and want every core, so the `test` target exports its own +# `RUST_TEST_THREADS` to opt back out -- cargo's `[env]` deliberately does not override a +# variable that is already set. +DOC_TEST_THREADS ?= 8 +TEST_THREADS ?= $(shell nproc 2>/dev/null || echo 8) + +.PHONY: help build test test-doc clean fmt clippy doc bench fuzz install coverage audit # Default target help: @echo "Available targets:" @echo " build - Build the project" @echo " test - Run all tests" + @echo " test-doc - Run doc tests (memory-bounded; see DOC_TEST_THREADS)" @echo " clean - Clean build artifacts" @echo " fmt - Format code" @echo " clippy - Run clippy lints" @@ -28,8 +46,20 @@ build-release: cargo build --release --all-features # Run tests +# +# Release profile is mandatory, not a speed preference: the sample-driven integration tests +# run the full detection -> SSA -> pass-pipeline -> codegen path over real packed binaries, +# which takes hours unoptimised and tens of seconds optimised. +# `--lib --bins --tests` excludes doc tests, which have their own target below because they +# need a concurrency cap this run does not. test: - cargo test --workspace --all-features --verbose + RUST_TEST_THREADS=$(TEST_THREADS) cargo test --workspace --release --all-features --lib --bins --tests --verbose + +# Run doc tests +# +# Split out from `test` and concurrency-capped: see DOC_TEST_THREADS at the top of this file. +test-doc: + cargo test --workspace --release --all-features --doc -- --test-threads=$(DOC_TEST_THREADS) # Run tests with coverage test-coverage: @@ -67,8 +97,18 @@ bench: cargo bench --all-features # Run fuzzing +# Runs every target in turn, each seeded from the committed crash corpus. Override the target +# with `make fuzz FUZZ_TARGETS=signatures`, or the duration with `FUZZ_TIME=300`. +FUZZ_TARGETS ?= cilobject assemblyview signatures customattributes methodbody emulation +FUZZ_TIME ?= 60 + fuzz: - cd fuzz && cargo +nightly fuzz run cilobject -- -max_total_time=60 + @for t in $(FUZZ_TARGETS); do \ + echo "=== fuzzing $$t ==="; \ + mkdir -p dotscope/fuzz/corpus/$$t; \ + cp dotscope/tests/samples/fuzz-regressions/* dotscope/fuzz/corpus/$$t/ 2>/dev/null || true; \ + (cd dotscope/fuzz && cargo +nightly fuzz run $$t -- -max_total_time=$(FUZZ_TIME)) || exit 1; \ + done # Install development tools install: @@ -89,7 +129,7 @@ outdated: cargo outdated # Run all checks -check-all: fmt-check clippy test audit +check-all: fmt-check clippy test test-doc audit @echo "All checks passed!" # Prepare for release @@ -102,5 +142,5 @@ dev: fmt clippy test @echo "Development cycle completed" # CI simulation (run what CI runs) -ci: fmt-check clippy test doc +ci: fmt-check clippy test test-doc doc @echo "CI simulation completed" diff --git a/README.md b/README.md index 06c2eab8..0b0f1b67 100644 --- a/README.md +++ b/README.md @@ -339,7 +339,7 @@ See the [examples README](examples/README.md) for a recommended learning path. Security is a top priority: - **Memory Safety**: Built on Rust's memory safety guarantees -- **Fuzzing**: Continuous fuzzing with cargo-fuzz +- **Fuzzing**: `cargo-fuzz` targets run on demand (`make fuzz`), with a committed crash corpus replayed by the test suite - **Input Validation**: Strict validation of all inputs - **Audit Trail**: Regular dependency auditing @@ -385,7 +385,7 @@ make coverage # Generate coverage report make fuzz # Extended fuzzing (manual) -cd fuzz && cargo +nightly fuzz run cilobject --release -- -max_total_time=1800 +cd dotscope/fuzz && cargo +nightly fuzz run cilobject --release -- -max_total_time=1800 # All quality checks make check-all diff --git a/dotscope/src/analysis/cfg/graph.rs b/dotscope/src/analysis/cfg/graph.rs index 61f5ea8e..d3e57791 100644 --- a/dotscope/src/analysis/cfg/graph.rs +++ b/dotscope/src/analysis/cfg/graph.rs @@ -130,6 +130,7 @@ impl ControlFlowGraph<'static> { )) })?; let successors = block.successors.clone(); + let exception_successors = block.exception_successors.clone(); let last_instruction = block.instructions.last(); // Determine edge kinds based on the terminating instruction @@ -153,6 +154,43 @@ impl ControlFlowGraph<'static> { graph.add_edge(*node_id, target_node, edge)?; } + + // Exception edges. Any instruction in a protected region can raise, so control + // can leave this block for its handler entry at any point; the edge is modelled + // at block granularity. Without these, handler blocks are unreachable islands — + // outside the dominator tree and invisible to every dataflow analysis. + for &handler_idx in &exception_successors { + if handler_idx >= block_count { + return Err(GraphError(format!( + "Block {} has exception successor index {} which exceeds block count {}", + node_id.index(), + handler_idx, + block_count + ))); + } + + // `add_edge` does not deduplicate and `predecessors` yields one entry per + // incoming edge, so a parallel edge would list this block twice among the + // handler's predecessors and desynchronise phi operand count from + // predecessor count. Skip a handler that is already a normal successor. + if successors.contains(&handler_idx) { + continue; + } + + let target_node = *node_ids + .get(handler_idx) + .ok_or_else(|| GraphError(format!("missing node id {handler_idx}")))?; + + // The caught class token is not reachable from here: `exception_successors` + // holds block indices, and `HandlerEntryInfo` carries the handler's *kind*, + // not its type, which lives in the method's exception table. `None` is the + // documented catch-all/finally encoding. + graph.add_edge( + *node_id, + target_node, + CfgEdge::exception_handler(handler_idx, None), + )?; + } } // Identify entry and exit blocks @@ -251,6 +289,26 @@ impl<'a> ControlFlowGraph<'a> { graph.add_edge(node_id, target_node, edge)?; } + + // See `from_basic_blocks` for why these edges exist, why an already-present + // normal successor is skipped, and why the exception type is `None`. + for &handler_idx in &block.exception_successors { + if handler_idx >= block_count { + return Err(GraphError(format!( + "Block {block_idx} has exception successor index {handler_idx} which exceeds block count {block_count}" + ))); + } + + if block.successors.contains(&handler_idx) { + continue; + } + + graph.add_edge( + node_id, + NodeId::new(handler_idx), + CfgEdge::exception_handler(handler_idx, None), + )?; + } } // Identify entry and exit blocks @@ -1126,4 +1184,94 @@ mod tests { assert_eq!(self_loop.latches.len(), 1); assert_eq!(self_loop.latches[0], NodeId::new(1)); // Self back edge (latch) } + + /// Blocks 0 and 1 form a protected region; block 2 is the handler entry. + /// + /// Layout: 0 -> 1 -> 3 (normal flow), with 0 and 1 both protected by handler 2. + fn eh_blocks() -> Vec { + let mut blocks = vec![ + make_block(0, vec![1], FlowType::UnconditionalBranch), + make_block(1, vec![3], FlowType::UnconditionalBranch), + make_block(2, vec![3], FlowType::UnconditionalBranch), + make_block(3, vec![], FlowType::Return), + ]; + for idx in 0..2 { + if let Some(block) = blocks.get_mut(idx) { + block.exception_successors.push(2); + } + } + blocks + } + + /// Without exception edges a handler is an unreachable island — outside + /// the dominator tree and invisible to every dataflow analysis. + #[test] + fn exception_edges_make_the_handler_reachable() { + let cfg = ControlFlowGraph::from_basic_blocks(eh_blocks()).unwrap(); + + // Every protected block reaches the handler. + let mut handler_preds: Vec = cfg + .predecessors(NodeId::new(2)) + .map(NodeId::index) + .collect(); + handler_preds.sort_unstable(); + assert_eq!(handler_preds, vec![0, 1]); + + // And the handler is a successor of each of them, tagged as an EH edge. + for protected in [0usize, 1] { + let succs: Vec = cfg + .successors(NodeId::new(protected)) + .map(NodeId::index) + .collect(); + assert!(succs.contains(&2), "block {protected} must reach handler 2"); + } + } + + /// `add_edge` does not deduplicate and `predecessors` yields one entry per incoming + /// edge, so a handler that is also a normal successor must not be wired twice. + #[test] + fn exception_edge_is_not_duplicated_when_already_a_normal_successor() { + let mut blocks = eh_blocks(); + // Make block 1 fall through to the handler as ordinary control flow too. + if let Some(block) = blocks.get_mut(1) { + block.successors = vec![2]; + } + + let cfg = ControlFlowGraph::from_basic_blocks(blocks).unwrap(); + + let preds: Vec = cfg + .predecessors(NodeId::new(2)) + .map(NodeId::index) + .collect(); + assert_eq!( + preds.iter().filter(|&&p| p == 1).count(), + 1, + "block 1 must appear exactly once among the handler's predecessors, got {preds:?}" + ); + } + + /// An out-of-range handler index is a malformed input, not a panic. + #[test] + fn exception_successor_out_of_range_is_rejected() { + let mut blocks = eh_blocks(); + if let Some(block) = blocks.get_mut(0) { + block.exception_successors = vec![99]; + } + + assert!(ControlFlowGraph::from_basic_blocks(blocks).is_err()); + } + + /// The borrowed constructor must wire the same edges as the owning one. + #[test] + fn from_blocks_ref_wires_exception_edges_too() { + let blocks = eh_blocks(); + let cfg = ControlFlowGraph::from_blocks_ref(&blocks).unwrap(); + + let mut handler_preds: Vec = cfg + .predecessors(NodeId::new(2)) + .map(NodeId::index) + .collect(); + handler_preds.sort_unstable(); + assert_eq!(handler_preds, vec![0, 1]); + } } diff --git a/dotscope/src/compiler/codegen/coalescing.rs b/dotscope/src/compiler/codegen/coalescing.rs index 40472bf1..fa747d35 100644 --- a/dotscope/src/compiler/codegen/coalescing.rs +++ b/dotscope/src/compiler/codegen/coalescing.rs @@ -28,7 +28,7 @@ use std::{ cmp::Reverse, - collections::{BTreeMap, BinaryHeap}, + collections::{BTreeMap, BTreeSet, BinaryHeap}, }; use analyssa::BitSet; @@ -463,19 +463,47 @@ impl LocalCoalescer { /// Computes live intervals for all variables in the SSA. /// - /// A live interval is the range [start, end) where a variable is live. - /// We use instruction indices within a linearized view of the CFG. + /// A live interval is the range [start, end) where a variable is live, in + /// instruction indices over a linearized view of the CFG. + /// + /// # Why this walks the CFG instead of scanning textually or running a dataflow solve + /// + /// A purely *textual* scan — `[first mention, last use + 1)` over blocks in `block_id` + /// order — under-approximates liveness across back edges. A value defined before a loop + /// and used inside it has its interval truncated at its last textual use, so its slot + /// returns to the free pool and can be handed to a variable defined later in the same + /// loop body; on the second iteration the earlier use reads a clobbered slot. Linear + /// scan only runs above [`LINEAR_SCAN_THRESHOLD`] variables, so that failure is + /// size-gated and invisible to small unit tests. + /// + /// The obvious fix — reuse the `LiveVariables` solve that [`Self::build_graph_coloring`] + /// runs — is the wrong tool *here*. That framework computes the live set of every + /// variable at every block simultaneously, storing a live-in and a live-out `BitSet` of + /// `var_capacity` bits per block: `2·B·V` bits. Graph colouring can afford that only + /// because it is gated to at most [`LINEAR_SCAN_THRESHOLD`] variables. Linear scan + /// exists precisely for the large, attacker-sized methods where `B·V` explodes, and the + /// CIL path has no method-size cap. + /// + /// Nothing here needs the full live sets. A [`LiveInterval`] is a single contiguous + /// range, so all that is required per variable is the earliest and latest point it is + /// live. SSA gives exactly one definition per variable, and it dominates every use, so + /// each variable's live range is found by the classic *up-and-mark* walk: start at each + /// use, walk up predecessors, stop at the defining block — no second definition can be + /// encountered on the way. Cost is `O(B)` memory for one reusable generation-stamp + /// array, and time proportional to the total live range, which is the size of the + /// answer rather than the size of a `B × V` matrix. Most SSA variables are block-local, + /// so their walk terminates immediately. fn compute_live_intervals(ssa: &SsaFunction) -> BTreeMap { + let block_count = ssa.block_count(); let mut intervals: BTreeMap = BTreeMap::new(); - // Phase 1: Build a map of block → end instruction index. - // PHI operands are semantically used at the END of the predecessor - // block (not at the PHI's block), so we need to know each block's - // end position to correctly extend operand intervals. - let mut block_end_idx: Vec = Vec::with_capacity(ssa.block_count()); + // Phase 1: number instructions, recording each block's [start, end) span. + let mut block_start_idx: Vec = Vec::with_capacity(block_count); + let mut block_end_idx: Vec = Vec::with_capacity(block_count); { let mut idx = 0usize; - for block_id in 0..ssa.block_count() { + for block_id in 0..block_count { + block_start_idx.push(idx); if let Some(block) = ssa.block(block_id) { idx = idx.saturating_add(block.instructions().len()); } @@ -483,61 +511,158 @@ impl LocalCoalescer { } } - // Phase 2: Assign instruction indices by walking blocks in order - let mut instr_idx = 0usize; + // Phase 2: locate every definition. This must complete before uses are processed, + // because a use can precede its definition in block order (that is what a back edge + // means) and the walk below keys its stop condition on the defining block. + let mut def_block: BTreeMap = BTreeMap::new(); - for block_id in 0..ssa.block_count() { + for block_id in 0..block_count { let Some(block) = ssa.block(block_id) else { continue; }; + let Some(&entry_pos) = block_start_idx.get(block_id) else { + continue; + }; - // Phi nodes define at block entry + // Phi nodes define at block entry. for phi in block.phi_nodes() { let def = phi.result(); - intervals + def_block.insert(def, block_id); + let interval = intervals .entry(def) - .or_insert_with(|| LiveInterval::new(instr_idx)) - .extend_start(instr_idx); - - // PHI operands are used at the END of their predecessor block. - // A variable v in `v<-B_pred` must be live from its definition - // through the end of B_pred. If B_pred comes AFTER the PHI's - // block in the linearized layout, extending only to the PHI - // position would leave a gap where the local slot can be reused. + .or_insert_with(|| LiveInterval::new(entry_pos)); + interval.extend_start(entry_pos); + interval.extend_end(entry_pos.saturating_add(1)); + } + + let mut pos = entry_pos; + for instr in block.instructions() { + if let Some(def) = instr.def() { + def_block.insert(def, block_id); + let interval = intervals + .entry(def) + .or_insert_with(|| LiveInterval::new(pos)); + interval.extend_start(pos); + // Cover the definition point itself. `extend_start` is a min and + // `extend_end` a max, so a variable used at 5 and defined at 10 would + // otherwise hold [5, 6) — an interval that expires before the value it + // describes even exists, freeing the slot while the def is still ahead. + interval.extend_end(pos.saturating_add(1)); + } + pos = pos.saturating_add(1); + } + } + + // Phase 3: record uses, and seed the backward walk with the blocks each variable is + // live *out* of. + let cfg = SsaCfg::from_ssa(ssa); + let mut live_out_seeds: BTreeMap> = BTreeMap::new(); + + for block_id in 0..block_count { + let Some(block) = ssa.block(block_id) else { + continue; + }; + let Some(&entry_pos) = block_start_idx.get(block_id) else { + continue; + }; + + // A phi operand is used at the END of its predecessor block, not here, so the + // value must stay live through that predecessor even when it is laid out after + // the phi's own block. + for phi in block.phi_nodes() { for operand in phi.operands() { let pred = operand.predecessor(); - let pred_end = block_end_idx - .get(pred) - .copied() - .unwrap_or_else(|| instr_idx.saturating_add(1)); - // Use the later of: PHI position or predecessor end - let use_point = pred_end.max(instr_idx.saturating_add(1)); + let Some(&pred_end) = block_end_idx.get(pred) else { + continue; + }; + let value = operand.value(); intervals - .entry(operand.value()) - .or_insert_with(|| LiveInterval::new(instr_idx)) - .extend_end(use_point); + .entry(value) + .or_insert_with(|| LiveInterval::new(pred_end)) + .extend_end(pred_end); + live_out_seeds.entry(value).or_default().push(pred); } } - // Process instructions + // Seeding is per (variable, block), not per use. The walk's generation stamps + // would dedupe the extra work anyway, but the seed vector itself would not: + // a variable used u times in a block with p predecessors would push u·p entries + // instead of p, and both factors are attacker-controlled. + let mut seeded_here: BTreeSet = BTreeSet::new(); + + let mut pos = entry_pos; for instr in block.instructions() { - // Uses extend the interval for &use_var in &instr.uses() { - intervals + let interval = intervals .entry(use_var) - .or_insert_with(|| LiveInterval::new(instr_idx)) - .extend_end(instr_idx.saturating_add(1)); + .or_insert_with(|| LiveInterval::new(pos)); + interval.extend_end(pos.saturating_add(1)); + + // A use in the defining block needs no walk — the value is live only + // from the definition to this point. Otherwise the value is live-in + // here, hence live-out of every predecessor. + if def_block.get(&use_var) != Some(&block_id) { + interval.extend_start(entry_pos); + if seeded_here.insert(use_var) { + live_out_seeds + .entry(use_var) + .or_default() + .extend(cfg.block_predecessors(block_id).iter().copied()); + } + } } + pos = pos.saturating_add(1); + } + } - // Definitions start the interval - if let Some(def) = instr.def() { - intervals - .entry(def) - .or_insert_with(|| LiveInterval::new(instr_idx)) - .extend_start(instr_idx); + // Phase 4: up-and-mark. For each variable, walk up from every block it is live out + // of, covering whole blocks, and stop at its definition. + // + // `seen` holds a generation stamp per block rather than a boolean, so resetting + // between variables is a single counter bump instead of an O(B) clear. The counter + // is `u64`, which cannot wrap within one function's variable count. + let mut seen: Vec = vec![0; block_count]; + let mut generation: u64 = 0; + let mut worklist: Vec = Vec::new(); + + for (var, seeds) in &live_out_seeds { + generation = generation.saturating_add(1); + let stop = def_block.get(var).copied(); + + worklist.clear(); + worklist.extend(seeds.iter().copied()); + + while let Some(block_id) = worklist.pop() { + let Some(stamp) = seen.get_mut(block_id) else { + continue; + }; + if *stamp == generation { + continue; + } + *stamp = generation; + + if let (Some(&block_start), Some(&block_end), Some(interval)) = ( + block_start_idx.get(block_id), + block_end_idx.get(block_id), + intervals.get_mut(var), + ) { + interval.extend_end(block_end.max(block_start.saturating_add(1))); + // In the defining block the value is live only from its definition + // onward, so the block's start must not pull the interval back. + if stop != Some(block_id) { + interval.extend_start(block_start); + } } - instr_idx = instr_idx.saturating_add(1); + // The definition dominates every use, so nothing above it is live. A + // variable with no recorded definition (an argument or entry live-in) has + // no stop block and correctly walks back to the entry, which has no + // predecessors. + if stop == Some(block_id) { + continue; + } + + worklist.extend(cfg.block_predecessors(block_id).iter().copied()); } } @@ -1056,6 +1181,71 @@ mod tests { assert_eq!(graph.degree(vars[4]), 0); } + /// A value defined before a loop and used inside it must stay live for the whole + /// loop, not just up to its last *textual* use. + /// + /// Under a textual interval scan `outer`'s interval ends at its single use + /// in the loop body, so the slot returns to the free pool and can be handed to `inner`, + /// which is defined later in that same body — and on the second iteration the read of + /// `outer` returns `inner`'s value. + #[test] + fn value_live_across_a_back_edge_keeps_its_slot() { + // block 0: outer = 7; jump 1 + // block 1: header, branch to body (2) or exit (3) + // block 2: body, reads `outer`, then defines `inner`; jumps back to 1 + // block 3: ret + let mut outer_id: Option = None; + let mut inner_id: Option = None; + + let ssa = SsaFunctionBuilder::new(1, 0) + .build_with(|f| { + let cond = f.arg(0, SsaType::Bool); + f.block(0, |b| { + outer_id = Some(b.const_i32(7)); + b.jump(1); + }); + f.block(1, |b| { + b.branch(cond, 2, 3); + }); + let outer = outer_id.expect("block 0 is built first"); + f.block(2, |b| { + // `outer` is read here — its last textual mention. + let _used = b.add(outer, outer); + // ...and `inner` is defined after it, in the same block. + let inner = b.const_i32(9); + let _also = b.add(inner, inner); + inner_id = Some(inner); + b.jump(1); + }); + f.block(3, |b| { + b.ret(); + }); + }) + .unwrap(); + + let outer = outer_id.expect("outer was defined"); + let inner = inner_id.expect("inner was defined"); + + let intervals = LocalCoalescer::compute_live_intervals(&ssa); + + let outer_interval = intervals.get(&outer).expect("outer must have an interval"); + let inner_interval = intervals.get(&inner).expect("inner must have an interval"); + + // The two must overlap, which is what stops the allocator reusing one slot for + // both. Overlap is the property that matters; exact indices are not contractual. + assert!( + outer_interval.start < inner_interval.end + && inner_interval.start < outer_interval.end, + "outer {outer_interval:?} and inner {inner_interval:?} must overlap across the back edge" + ); + + // And `outer` must survive past the point where `inner` is defined. + assert!( + outer_interval.end > inner_interval.start, + "outer {outer_interval:?} expired before inner {inner_interval:?} was defined" + ); + } + #[test] fn test_type_compatibility_same_class() { // Same types are compatible diff --git a/dotscope/src/compiler/codegen/mod.rs b/dotscope/src/compiler/codegen/mod.rs index 75db38f1..11d3896b 100644 --- a/dotscope/src/compiler/codegen/mod.rs +++ b/dotscope/src/compiler/codegen/mod.rs @@ -68,8 +68,8 @@ use crate::{ TypeSignature, }, tables::{ - ClassLayoutRaw, CodedIndex, CodedIndexType, FieldRaw, FieldRvaRaw, MemberRefRaw, - NestedClassRaw, TableDataOwned, TableId, TypeDefRaw, TypeRefRaw, + skip_unreadable, ClassLayoutRaw, CodedIndex, CodedIndexType, FieldRaw, FieldRvaRaw, + MemberRefRaw, NestedClassRaw, TableDataOwned, TableId, TypeDefRaw, TypeRefRaw, }, token::Token, }, @@ -133,6 +133,32 @@ impl TempPool { } } +/// One entry in the emission order. +/// +/// Out-of-SSA needs somewhere to put a phi copy for the edge `from → to`. When `from` has a +/// single successor the copy can simply precede its branch, but a multi-way terminator +/// (`Branch`, `BranchCmp`, `Switch`) has no such place: the copy belongs *on the edge*, and +/// each edge needs its own. +/// +/// Edge blocks are therefore ordinary entries in the emission order rather than labelled runs +/// spliced into branch emission. That makes "does code sit between this block and its +/// successor" a structural property the layout answers — whatever lands between two blocks is +/// something the layout placed — rather than a condition each branch emitter has to maintain +/// by predicting what will be emitted after it. Getting that prediction wrong is the class of +/// unsound fall-through elision this pass removes. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +enum LayoutEntry { + /// A real SSA block, identified by its block id. + Block(usize), + /// A synthetic block carrying the phi copies for one CFG edge. + SplitEdge { + /// Block the edge leaves. + from: usize, + /// Block the edge enters. + to: usize, + }, +} + /// SSA to CIL code generator. /// /// Converts SSA form back to executable CIL bytecode with optimizations. @@ -143,6 +169,12 @@ pub struct SsaCodeGenerator { next_local: u16, /// Map from block index to label name block_labels: BTreeMap, + /// Label for each edge that was given its own block, keyed by `(from, to)`. + /// + /// Present only for edges leaving a multi-way terminator that carry phi copies. A + /// branch whose target appears here jumps to the edge block instead of the target + /// block; the edge block does the copies and then continues to the real target. + split_edge_labels: BTreeMap<(usize, usize), String>, /// Variables that are currently on the stack (for optimization) stack_vars: Vec, /// Cache of interned decrypted strings (string content -> heap index) @@ -262,6 +294,7 @@ impl SsaCodeGenerator { var_storage: BTreeMap::new(), next_local: 0, block_labels: BTreeMap::new(), + split_edge_labels: BTreeMap::new(), stack_vars: Vec::new(), interned_strings: HashMap::new(), deferred_constants: BTreeMap::new(), @@ -657,6 +690,7 @@ impl SsaCodeGenerator { self.var_storage.clear(); self.next_local = 0; self.block_labels.clear(); + self.split_edge_labels.clear(); self.stack_vars.clear(); self.interned_strings.clear(); self.deferred_constants.clear(); @@ -787,15 +821,39 @@ impl SsaCodeGenerator { // Compute optimal block layout to minimize unnecessary branches. // This reorders blocks so that fall-through paths don't need explicit jumps. let block_ids = Self::compute_block_layout(ssa, &blocks_to_include); - let blocks_to_generate: Vec<_> = block_ids.iter().filter_map(|&id| ssa.block(id)).collect(); - for (idx, block) in blocks_to_generate.iter().enumerate() { - // Record block start offset for exception handler remapping - let pos_before = encoder.current_position(); - self.block_offsets.insert(block.id(), pos_before); + // Give every phi-carrying edge out of a multi-way terminator its own block, and + // register a label for it, so the copies are ordinary layout entries rather than + // runs spliced into branch emission. + let layout = self.expand_layout_with_edge_blocks(ssa, &block_ids)?; + + for idx in 0..layout.len() { + let Some(&entry) = layout.get(idx) else { + continue; + }; + + // Fall-through is available only to whatever the *next entry* is. Naming the + // entry rather than a block id is what makes the elision safe by construction: + // an edge block between two blocks is itself an entry, so it suppresses the + // elision on its own instead of each branch helper having to predict that code + // will be emitted after it. + let next_entry = layout.get(idx.saturating_add(1)).copied(); - let next_block_idx = block_ids.get(idx.saturating_add(1)).copied(); - self.generate_block(&mut encoder, ssa, block, block.id(), next_block_idx)?; + match entry { + LayoutEntry::Block(block_id) => { + let Some(block) = ssa.block(block_id) else { + continue; + }; + // Record block start offset for exception handler remapping + let pos_before = encoder.current_position(); + self.block_offsets.insert(block_id, pos_before); + + self.generate_block(&mut encoder, ssa, block, block_id, next_entry)?; + } + LayoutEntry::SplitEdge { from, to } => { + self.generate_edge_block(&mut encoder, ssa, from, to, next_entry)?; + } + } } // Phase 4: Finalize and resolve labels @@ -1008,6 +1066,13 @@ impl SsaCodeGenerator { let typeref_table = tables.table::()?; for row in typeref_table.iter() { + let row = match row { + Ok(row) => row, + Err(e) => { + log::warn!("skipping unreadable metadata row: {e}"); + continue; + } + }; let Ok(name) = strings.get(row.type_name as usize) else { continue; }; @@ -1030,7 +1095,7 @@ impl SsaCodeGenerator { let tables = assembly.view().tables()?; let strings = assembly.view().strings()?; let member_refs = tables.table::()?; - for row in member_refs { + for row in member_refs.iter().filter_map(skip_unreadable) { if let Ok(name) = strings.get(row.name as usize) { if name == "InitializeArray" { return Some(row.token); @@ -1159,6 +1224,13 @@ impl SsaCodeGenerator { let typeref_table = tables.table::()?; for row in typeref_table.iter() { + let row = match row { + Ok(row) => row, + Err(e) => { + log::warn!("skipping unreadable metadata row: {e}"); + continue; + } + }; let Ok(name) = strings.get(row.type_name as usize) else { continue; }; @@ -1524,6 +1596,89 @@ impl SsaCodeGenerator { layout } + /// Expands a block layout into the emission order, giving every phi-carrying edge out of + /// a multi-way terminator its own [`LayoutEntry::SplitEdge`] block. + /// + /// # Which edges get a block + /// + /// Only edges leaving `Branch`, `BranchCmp` and `Switch`. A block with a single + /// successor has a place for its copies already — immediately before its branch, where + /// `generate_branch_op` still emits them — and an edge out of a single-successor block + /// is never critical, so it cannot need one. + /// + /// # Where they go + /// + /// Directly after the block the edge leaves, preferred-successor edge first. That keeps + /// each edge block inside whatever EH region its source block is in (a protected region + /// can only be left by `leave`, so a two-way branch never crosses out of one), and lets + /// the source block fall through into the edge it most likely takes. + /// + /// The edges are registered in `split_edge_labels` as they are placed, which is what + /// makes [`Self::edge_label`] and [`Self::edge_destination`] agree with the layout: a + /// branch names the edge block exactly when the layout created one. + /// + /// # Errors + /// + /// Propagates the storage lookup in [`Self::successor_has_phi_from`]. + fn expand_layout_with_edge_blocks( + &mut self, + ssa: &SsaFunction, + block_ids: &[usize], + ) -> Result> { + let mut layout: Vec = Vec::with_capacity(block_ids.len()); + + for &block_id in block_ids { + layout.push(LayoutEntry::Block(block_id)); + + let Some(block) = ssa.block(block_id) else { + continue; + }; + + // Preferred successor first, matching `compute_block_layout::preferred_successor`, + // so the edge block that can be reached by fall-through is the adjacent one. + let edge_targets: Vec = match block.terminator_op() { + Some( + SsaOp::Branch { + true_target, + false_target, + .. + } + | SsaOp::BranchCmp { + true_target, + false_target, + .. + }, + ) => vec![*false_target, *true_target], + Some(SsaOp::Switch { + targets, default, .. + }) => { + let mut all = Vec::with_capacity(targets.len().saturating_add(1)); + all.push(*default); + all.extend(targets.iter().copied()); + all + } + _ => continue, + }; + + for to in edge_targets { + // A switch may name the same target more than once, and a two-way branch + // may name the same block on both edges. One edge, one block. + if self.split_edge_labels.contains_key(&(block_id, to)) { + continue; + } + if !self.successor_has_phi_from(ssa, block_id, to)? { + continue; + } + + self.split_edge_labels + .insert((block_id, to), format!("edge_{block_id}_{to}")); + layout.push(LayoutEntry::SplitEdge { from: block_id, to }); + } + } + + Ok(layout) + } + /// Allocates storage for all SSA variables using graph coloring. /// /// Arguments get mapped to their original argument slots (ldarg/starg). @@ -2561,7 +2716,7 @@ impl SsaCodeGenerator { ssa: &SsaFunction, block: &SsaBlock, block_idx: usize, - next_block_idx: Option, + next_entry: Option, ) -> Result<()> { // Exception handler entry blocks (catch, filter, finally, fault) are only // entered via CLR exception dispatch — never via fallthrough from the previous @@ -2750,7 +2905,7 @@ impl SsaCodeGenerator { def_map: &def_map, current_block_idx: block_idx, }; - self.generate_ops_iterative(encoder, &ctx, &roots, next_block_idx)?; + self.generate_ops_iterative(encoder, &ctx, &roots, next_entry)?; // Check if the block ends with a non-terminator (falls through to next block) // If so, spill remaining stack values and emit phi stores for the fallthrough @@ -2759,7 +2914,11 @@ impl SsaCodeGenerator { // Spill any remaining stack values before fallthrough self.spill_stack(encoder, ssa)?; - if let Some(next_idx) = next_block_idx { + // A block with no terminator has exactly one successor, so its edge is never + // critical and never gets a block of its own — which is also why the next entry + // is always a `Block` here: edge blocks are only ever placed directly after a + // multi-way terminator. + if let Some(LayoutEntry::Block(next_idx)) = next_entry { self.emit_phi_stores_for_successor(encoder, ssa, block_idx, next_idx)?; } } @@ -2782,7 +2941,7 @@ impl SsaCodeGenerator { encoder: &mut InstructionEncoder, ctx: &BlockCodegenContext<'_>, roots: &[usize], - next_block_idx: Option, + next_entry: Option, ) -> Result<()> { // Use global use counts to determine if variables need storage. // Variables used multiple times (across ANY blocks) must be stored to locals @@ -3002,7 +3161,7 @@ impl SsaCodeGenerator { ctx.ssa, ctx.current_block_idx, cur_op, - next_block_idx, + next_entry, )?; generated.insert(idx); @@ -3089,7 +3248,7 @@ impl SsaCodeGenerator { ctx.ssa, ctx.current_block_idx, root_op, - next_block_idx, + next_entry, )?; generated.insert(root_idx); } @@ -3357,7 +3516,7 @@ impl SsaCodeGenerator { ssa: &SsaFunction, current_block_idx: usize, op: &SsaOp, - next_block_idx: Option, + next_entry: Option, ) -> Result<()> { // Clear last_load tracking - after any operation, the stack state changes // and the "last loaded" value may no longer be on top of the stack. @@ -3458,7 +3617,7 @@ impl SsaCodeGenerator { | SsaOp::EndFilter { .. } | SsaOp::BranchCmp { .. } | SsaOp::BranchFlags { .. } => { - self.generate_branch_op(encoder, ssa, current_block_idx, op, next_block_idx)?; + self.generate_branch_op(encoder, ssa, current_block_idx, op, next_entry)?; } // Simple standalone operations @@ -4043,7 +4202,7 @@ impl SsaCodeGenerator { ssa: &SsaFunction, current_block_idx: usize, op: &SsaOp, - next_block_idx: Option, + next_entry: Option, ) -> Result<()> { match op { SsaOp::Return { .. } => { @@ -4062,15 +4221,12 @@ impl SsaCodeGenerator { // Spill remaining stack values before control flow transfer self.spill_stack(encoder, ssa)?; - // Emit phi stores for the target block before jumping + // A jump has one successor, so its copies have a place already: right here, + // before the branch. No edge block is created for it. self.emit_phi_stores_for_successor(encoder, ssa, current_block_idx, *target)?; - if Some(*target) != next_block_idx { - let label = self - .block_labels - .get(target) - .cloned() - .unwrap_or_else(|| format!("block_{target}")); + if next_entry != Some(LayoutEntry::Block(*target)) { + let label = self.block_label(*target); // emit_branch validates stack depth at target encoder.emit_branch("br", &label)?; } @@ -4085,14 +4241,12 @@ impl SsaCodeGenerator { // The condition is already on the stack from operand loading. self.spill_stack(encoder, ssa)?; - // Handle phi stores for both targets using intermediate blocks - self.emit_branch_with_phi_stores( + self.emit_conditional_branch( encoder, - ssa, current_block_idx, *true_target, *false_target, - next_block_idx, + next_entry, )?; } @@ -4102,15 +4256,7 @@ impl SsaCodeGenerator { // Spill any remaining stack values except the switch value. self.spill_stack(encoder, ssa)?; - // Handle phi stores for switch targets using intermediate blocks - self.emit_switch_with_phi_stores( - encoder, - ssa, - current_block_idx, - targets, - *default, - next_block_idx, - )?; + self.emit_switch_branch(encoder, current_block_idx, targets, *default, next_entry)?; } SsaOp::Throw { .. } => { @@ -4131,14 +4277,10 @@ impl SsaCodeGenerator { // Spill any remaining stack values before leaving protected region. self.spill_stack(encoder, ssa)?; - // Emit phi stores for the target block before leaving + // A leave has one successor, so its copies go here, before the transfer. self.emit_phi_stores_for_successor(encoder, ssa, current_block_idx, *target)?; - let label = self - .block_labels - .get(target) - .cloned() - .unwrap_or_else(|| format!("block_{target}")); + let label = self.block_label(*target); encoder.emit_branch("leave", &label)?; } @@ -4166,16 +4308,15 @@ impl SsaCodeGenerator { // Spill any remaining stack values except the comparison operands. self.spill_stack(encoder, ssa)?; - // Emit comparison branch with phi stores - operands are already on the stack - self.emit_branch_cmp_with_phi_stores( + // Operands are already on the stack. + self.emit_comparison_branch( encoder, - ssa, current_block_idx, *cmp, *unsigned, *true_target, *false_target, - next_block_idx, + next_entry, )?; } @@ -4777,317 +4918,213 @@ impl SsaCodeGenerator { Ok(false) } - /// Emits a conditional branch (brtrue/brfalse) with proper phi store handling. + /// Label of a real block. + fn block_label(&self, block_id: usize) -> String { + self.block_labels + .get(&block_id) + .cloned() + .unwrap_or_else(|| format!("block_{block_id}")) + } + + /// The layout entry the edge `from → to` actually lands on. /// - /// When branch targets have phi nodes, we emit intermediate blocks that: - /// 1. Execute the phi stores for that specific edge - /// 2. Jump to the actual target + /// This is the whole of the fall-through question. A branch may elide its `br` exactly + /// when the entry it transfers to is the next one in the emission order — and because + /// edge blocks are entries, "is there code in between" is answered by looking at the + /// layout rather than by each emitter re-deriving what the others will emit after it. + fn edge_destination(&self, from: usize, to: usize) -> LayoutEntry { + if self.split_edge_labels.contains_key(&(from, to)) { + LayoutEntry::SplitEdge { from, to } + } else { + LayoutEntry::Block(to) + } + } + + /// Label a branch along the edge `from → to` must name: the edge's own block when it has + /// one, otherwise the target block directly. + fn edge_label(&self, from: usize, to: usize) -> String { + self.split_edge_labels + .get(&(from, to)) + .cloned() + .unwrap_or_else(|| self.block_label(to)) + } + + /// Generates the block holding the phi copies for one edge. /// - /// This handles the "critical edge splitting" problem where different predecessors - /// need to provide different values to phi nodes. - fn emit_branch_with_phi_stores( + /// The body is just the parallel copy for that edge followed by a transfer to the real + /// target, which is elided when the target is the next entry. + /// + /// # Errors + /// + /// Returns an error if the edge has no registered label — which would mean the layout + /// and [`Self::edge_destination`] disagree — or if emission fails. + fn generate_edge_block( &mut self, encoder: &mut InstructionEncoder, ssa: &SsaFunction, + from: usize, + to: usize, + next_entry: Option, + ) -> Result<()> { + let label = self + .split_edge_labels + .get(&(from, to)) + .cloned() + .ok_or_else(|| { + Error::CodegenFailed(format!("Missing split-edge label for edge {from} -> {to}")) + })?; + + encoder.define_label(&label)?; + + // An edge block is reached by a branch or by falling out of its source block, and in + // both cases the source has already spilled: the evaluation stack is empty here, so + // nothing the source left in `stack_vars` is still on it. + self.stack_vars.clear(); + + self.emit_phi_stores_for_successor(encoder, ssa, from, to)?; + + if next_entry != Some(LayoutEntry::Block(to)) { + let target_label = self.block_label(to); + encoder.emit_branch("br", &target_label)?; + } + + Ok(()) + } + + /// Emits a conditional branch (`brtrue`/`brfalse`). + /// + /// Phi copies are not this function's concern: any edge that carries them was given its + /// own block by [`Self::expand_layout_with_edge_blocks`], so all that is emitted here is + /// the branch, naming the edge block where there is one. + fn emit_conditional_branch( + &mut self, + encoder: &mut InstructionEncoder, current_block_idx: usize, true_target: usize, false_target: usize, - next_block_idx: Option, + next_entry: Option, ) -> Result<()> { - // Same-target: condition is irrelevant, discard it and emit unconditional branch + // Same-target: the condition cannot change where control goes, so discard it. if true_target == false_target { encoder.emit_instruction("pop", None)?; - if self.successor_has_phi_from(ssa, current_block_idx, true_target)? { - self.emit_phi_stores_for_successor(encoder, ssa, current_block_idx, true_target)?; - } - if Some(true_target) != next_block_idx { - let label = self - .block_labels - .get(&true_target) - .cloned() - .unwrap_or_else(|| format!("block_{true_target}")); + if next_entry != Some(self.edge_destination(current_block_idx, true_target)) { + let label = self.edge_label(current_block_idx, true_target); encoder.emit_branch("br", &label)?; } return Ok(()); } - let true_has_phi = self.successor_has_phi_from(ssa, current_block_idx, true_target)?; - let false_has_phi = self.successor_has_phi_from(ssa, current_block_idx, false_target)?; - - let true_label = self - .block_labels - .get(&true_target) - .cloned() - .unwrap_or_else(|| format!("block_{true_target}")); - let false_label = self - .block_labels - .get(&false_target) - .cloned() - .unwrap_or_else(|| format!("block_{false_target}")); - - // Simple case: no phi stores needed for either target - if !true_has_phi && !false_has_phi { - if Some(false_target) == next_block_idx { - encoder.emit_branch("brtrue", &true_label)?; - } else if Some(true_target) == next_block_idx { - encoder.emit_branch("brfalse", &false_label)?; - } else { - encoder.emit_branch("brtrue", &true_label)?; - encoder.emit_branch("br", &false_label)?; - } - return Ok(()); - } - - // Generate unique intermediate label for false path (true path is inline) - let phi_false_label = format!("phi_false_{current_block_idx}_{false_target}"); - - // Emit the conditional branch - // Strategy: brfalse to false handling, then handle true path - if true_has_phi { - encoder.emit_branch( - "brfalse", - if false_has_phi { - &phi_false_label - } else { - &false_label - }, - )?; + let true_label = self.edge_label(current_block_idx, true_target); + let false_label = self.edge_label(current_block_idx, false_target); + let true_dest = self.edge_destination(current_block_idx, true_target); + let false_dest = self.edge_destination(current_block_idx, false_target); - // True path: emit phi stores then jump - self.emit_phi_stores_for_successor(encoder, ssa, current_block_idx, true_target)?; - if Some(true_target) != next_block_idx { - encoder.emit_branch("br", &true_label)?; - } + if next_entry == Some(false_dest) { + encoder.emit_branch("brtrue", &true_label)?; + } else if next_entry == Some(true_dest) { + // `brfalse` is the exact complement of `brtrue`: both test one value against + // zero/null, so there is no third outcome to mishandle. That is what makes the + // inversion safe here and *not* safe for the comparison branches below. + encoder.emit_branch("brfalse", &false_label)?; } else { - // No phi stores for true - just branch directly encoder.emit_branch("brtrue", &true_label)?; - } - - // False path handling - if false_has_phi { - // Define the intermediate label for false path - if true_has_phi { - encoder.define_label(&phi_false_label)?; - } - // Emit phi stores for false target - self.emit_phi_stores_for_successor(encoder, ssa, current_block_idx, false_target)?; - if Some(false_target) != next_block_idx { - encoder.emit_branch("br", &false_label)?; - } - } else if !true_has_phi { - // Neither has phi, but we need to handle fallthrough - if Some(false_target) != next_block_idx { - encoder.emit_branch("br", &false_label)?; - } + encoder.emit_branch("br", &false_label)?; } Ok(()) } - /// Emits a comparison branch (beq, blt, etc.) with proper phi store handling. - #[allow(clippy::too_many_arguments)] // Branch emission requires comparison type, targets, and context - fn emit_branch_cmp_with_phi_stores( + /// Emits a comparison branch (`beq`, `blt`, …). + /// + /// As with [`Self::emit_conditional_branch`], phi copies live in their own blocks and are + /// not emitted here. + // The comparison kind and its signedness select the mnemonic, and both edges are needed to + // decide which one can fall through; neither pair compresses into a type that would carry + // its own meaning. + #[allow(clippy::too_many_arguments)] + fn emit_comparison_branch( &mut self, encoder: &mut InstructionEncoder, - ssa: &SsaFunction, current_block_idx: usize, cmp: CmpKind, unsigned: bool, true_target: usize, false_target: usize, - next_block_idx: Option, + next_entry: Option, ) -> Result<()> { - // Same-target: comparison is irrelevant, discard both operands + // Same-target: the comparison cannot change where control goes, so discard both + // operands rather than evaluating it. if true_target == false_target { encoder.emit_instruction("pop", None)?; encoder.emit_instruction("pop", None)?; - if self.successor_has_phi_from(ssa, current_block_idx, true_target)? { - self.emit_phi_stores_for_successor(encoder, ssa, current_block_idx, true_target)?; - } - if Some(true_target) != next_block_idx { - let label = self - .block_labels - .get(&true_target) - .cloned() - .unwrap_or_else(|| format!("block_{true_target}")); + if next_entry != Some(self.edge_destination(current_block_idx, true_target)) { + let label = self.edge_label(current_block_idx, true_target); encoder.emit_branch("br", &label)?; } return Ok(()); } - let true_has_phi = self.successor_has_phi_from(ssa, current_block_idx, true_target)?; - let false_has_phi = self.successor_has_phi_from(ssa, current_block_idx, false_target)?; - - let true_label = self - .block_labels - .get(&true_target) - .cloned() - .unwrap_or_else(|| format!("block_{true_target}")); - let false_label = self - .block_labels - .get(&false_target) - .cloned() - .unwrap_or_else(|| format!("block_{false_target}")); - - // Get the comparison mnemonic and its inverse - let (mnemonic, inverse_mnemonic) = match (cmp, unsigned) { - (CmpKind::Eq, _) => ("beq", "bne.un"), - (CmpKind::Ne, _) => ("bne.un", "beq"), - (CmpKind::Lt, false) => ("blt", "bge"), - (CmpKind::Lt, true) => ("blt.un", "bge.un"), - (CmpKind::Le, false) => ("ble", "bgt"), - (CmpKind::Le, true) => ("ble.un", "bgt.un"), - (CmpKind::Gt, false) => ("bgt", "ble"), - (CmpKind::Gt, true) => ("bgt.un", "ble.un"), - (CmpKind::Ge, false) => ("bge", "blt"), - (CmpKind::Ge, true) => ("bge.un", "blt.un"), + let true_label = self.edge_label(current_block_idx, true_target); + let false_label = self.edge_label(current_block_idx, false_target); + let false_dest = self.edge_destination(current_block_idx, false_target); + + // Only the comparison as written is needed; there is no inverse-mnemonic table + // because the branch below never inverts. See the note there for why ordered + // complements are wrong for floats. + let mnemonic = match (cmp, unsigned) { + (CmpKind::Eq, _) => "beq", + (CmpKind::Ne, _) => "bne.un", + (CmpKind::Lt, false) => "blt", + (CmpKind::Lt, true) => "blt.un", + (CmpKind::Le, false) => "ble", + (CmpKind::Le, true) => "ble.un", + (CmpKind::Gt, false) => "bgt", + (CmpKind::Gt, true) => "bgt.un", + (CmpKind::Ge, false) => "bge", + (CmpKind::Ge, true) => "bge.un", }; - // Simple case: no phi stores needed for either target - if !true_has_phi && !false_has_phi { - encoder.emit_branch(mnemonic, &true_label)?; - if Some(false_target) != next_block_idx { - encoder.emit_branch("br", &false_label)?; - } - return Ok(()); - } - - // Generate unique intermediate labels - let phi_false_label = format!("phi_false_{current_block_idx}_{false_target}"); - - if true_has_phi { - // Use inverse condition to branch to false handling, then handle true inline - encoder.emit_branch( - inverse_mnemonic, - if false_has_phi { - &phi_false_label - } else { - &false_label - }, - )?; - - // True path: emit phi stores then jump - self.emit_phi_stores_for_successor(encoder, ssa, current_block_idx, true_target)?; - if Some(true_target) != next_block_idx { - encoder.emit_branch("br", &true_label)?; - } - } else { - // No phi stores for true - just branch directly - encoder.emit_branch(mnemonic, &true_label)?; - } - - // False path handling - if false_has_phi { - if true_has_phi { - encoder.define_label(&phi_false_label)?; - } - self.emit_phi_stores_for_successor(encoder, ssa, current_block_idx, false_target)?; - if Some(false_target) != next_block_idx { - encoder.emit_branch("br", &false_label)?; - } - } else if !true_has_phi && Some(false_target) != next_block_idx { + // Always branch on the comparison as written, never on its complement. + // + // A complement table built from *ordered* opposites (`blt`/`bge`, `ble`/`bgt`, …) is + // wrong for floats: with a NaN operand every ordered comparison is false, so both + // `blt` and `bge` are false and the inverted branch sends the NaN case down the true + // edge — precisely the edge the comparison rejected. The complement can only be + // stated correctly once the operand type is known, since `.un` means *unordered* for + // floats but *unsigned* for integers. Emitting the original mnemonic sidesteps the + // question entirely: no inversion, no type dependence. + encoder.emit_branch(mnemonic, &true_label)?; + if next_entry != Some(false_dest) { encoder.emit_branch("br", &false_label)?; } Ok(()) } - /// Emits a switch instruction with proper phi store handling. + /// Emits a switch instruction and the transfer along its default edge. /// - /// For each switch target that has phi nodes from the current block, - /// we create an intermediate block that executes the phi stores and - /// then jumps to the actual target. - fn emit_switch_with_phi_stores( + /// Each case edge names its own edge block where it has one, which keeps the switch a + /// plain jump table: nothing is woven between the instruction and the default branch. + fn emit_switch_branch( &mut self, encoder: &mut InstructionEncoder, - ssa: &SsaFunction, current_block_idx: usize, targets: &[usize], default: usize, - next_block_idx: Option, + next_entry: Option, ) -> Result<()> { - // Determine which targets need phi stores - let mut needs_intermediate: Vec = Vec::with_capacity(targets.len()); - for &target in targets { - needs_intermediate.push(self.successor_has_phi_from(ssa, current_block_idx, target)?); - } - let default_needs_intermediate = - self.successor_has_phi_from(ssa, current_block_idx, default)?; - - // Build the label list for the switch instruction - // Use intermediate labels for targets that need phi stores - let mut switch_labels: Vec = Vec::with_capacity(targets.len()); - for (i, &target) in targets.iter().enumerate() { - if needs_intermediate.get(i).copied().unwrap_or(false) { - switch_labels.push(format!("phi_switch_{current_block_idx}_{i}")); - } else { - switch_labels.push( - self.block_labels - .get(&target) - .cloned() - .unwrap_or_else(|| format!("block_{target}")), - ); - } - } + let switch_labels: Vec = targets + .iter() + .map(|&target| self.edge_label(current_block_idx, target)) + .collect(); - // Emit the switch instruction let label_refs: Vec<&str> = switch_labels.iter().map(String::as_str).collect(); encoder.emit_switch(&label_refs)?; - // Emit jump to default (or intermediate for default) - let default_label = self - .block_labels - .get(&default) - .cloned() - .unwrap_or_else(|| format!("block_{default}")); - - if default_needs_intermediate { - let default_intermediate = format!("phi_switch_{current_block_idx}_default"); - if Some(default) != next_block_idx { - encoder.emit_branch("br", &default_intermediate)?; - } - - // Emit intermediate blocks for targets that need phi stores - for (i, &target) in targets.iter().enumerate() { - if needs_intermediate.get(i).copied().unwrap_or(false) { - let intermediate_label = format!("phi_switch_{current_block_idx}_{i}"); - encoder.define_label(&intermediate_label)?; - self.emit_phi_stores_for_successor(encoder, ssa, current_block_idx, target)?; - let target_label = self - .block_labels - .get(&target) - .cloned() - .unwrap_or_else(|| format!("block_{target}")); - encoder.emit_branch("br", &target_label)?; - } - } - - // Emit intermediate block for default - encoder.define_label(&default_intermediate)?; - self.emit_phi_stores_for_successor(encoder, ssa, current_block_idx, default)?; - if Some(default) != next_block_idx { - encoder.emit_branch("br", &default_label)?; - } - } else { - // Default doesn't need phi stores - if Some(default) != next_block_idx { - encoder.emit_branch("br", &default_label)?; - } - - // Emit intermediate blocks for targets that need phi stores - for (i, &target) in targets.iter().enumerate() { - if needs_intermediate.get(i).copied().unwrap_or(false) { - let intermediate_label = format!("phi_switch_{current_block_idx}_{i}"); - encoder.define_label(&intermediate_label)?; - self.emit_phi_stores_for_successor(encoder, ssa, current_block_idx, target)?; - let target_label = self - .block_labels - .get(&target) - .cloned() - .unwrap_or_else(|| format!("block_{target}")); - encoder.emit_branch("br", &target_label)?; - } - } + // Falling out of a switch is the default edge. + if next_entry != Some(self.edge_destination(current_block_idx, default)) { + let default_label = self.edge_label(current_block_idx, default); + encoder.emit_branch("br", &default_label)?; } Ok(()) diff --git a/dotscope/src/compiler/passes/constants/tests.rs b/dotscope/src/compiler/passes/constants/tests.rs index be4171ca..f02cf3e8 100644 --- a/dotscope/src/compiler/passes/constants/tests.rs +++ b/dotscope/src/compiler/passes/constants/tests.rs @@ -6,7 +6,7 @@ use crate::{ SsaVarId, }, compiler::{ - passes::constants::{AlgebraicResult, ConstantPropagationPass}, + passes::constants::{fold_rem, AlgebraicResult, ConstantPropagationPass, IntOperand}, CompilerContext, EventLog, SsaPass, }, metadata::{token::Token, typesystem::PointerSize}, @@ -1286,3 +1286,118 @@ fn test_fold_string_operations_with_decrypted_concat() { "Unresolvable method should not fold" ); } + +/// `rem.un` reads its operands as unsigned at their own width. +/// +/// Reaching them through a sign-extending accessor turns `I32(-1)` into +/// `0xFFFF_FFFF_FFFF_FFFF`, so `-1 rem.un 7` folds to `1` instead of the `3` that +/// `0xFFFF_FFFF % 7` gives. That is a wrong constant on the default deobfuscation path — +/// modulus-with-a-key is the canonical decryptor shape. +#[test] +fn rem_un_treats_i32_operands_as_unsigned_32_bit() { + let l = IntOperand::from_const(&ConstValue::I32(-1)).unwrap(); + let r = IntOperand::from_const(&ConstValue::I32(7)).unwrap(); + + assert_eq!(fold_rem(l, r, true), Some(ConstValue::I32(3))); + // Signed: Rust and CIL agree that the remainder takes the dividend's sign. + assert_eq!(fold_rem(l, r, false), Some(ConstValue::I32(-1))); +} + +/// The folded constant keeps the operands' width. +/// +/// Narrowing a 64-bit remainder to `I32` is worse than a wrong value: codegen then emits +/// `ldc.i4` where the stack type requires `ldc.i8`, which fails verification. +#[test] +fn rem_keeps_the_operand_width() { + let wide = IntOperand::from_const(&ConstValue::I64(0x1_0000_0000 + 5)).unwrap(); + let divisor = IntOperand::from_const(&ConstValue::I64(0x1_0000_0000)).unwrap(); + + assert_eq!(fold_rem(wide, divisor, false), Some(ConstValue::I64(5))); +} + +/// Cases the runtime turns into an exception must not be folded away. +#[test] +fn rem_refuses_to_fold_faulting_and_unverifiable_cases() { + let one = IntOperand::from_const(&ConstValue::I32(1)).unwrap(); + let zero = IntOperand::from_const(&ConstValue::I32(0)).unwrap(); + let min = IntOperand::from_const(&ConstValue::I32(i32::MIN)).unwrap(); + let neg_one = IntOperand::from_const(&ConstValue::I32(-1)).unwrap(); + let wide = IntOperand::from_const(&ConstValue::I64(1)).unwrap(); + + // DivideByZeroException + assert_eq!(fold_rem(one, zero, false), None); + assert_eq!(fold_rem(one, zero, true), None); + // OverflowException + assert_eq!(fold_rem(min, neg_one, false), None); + // Mixed widths are unverifiable IL; folding would invent a promotion. + assert_eq!(fold_rem(one, wide, false), None); +} + +/// An overflow-checked op must test overflow at the operands' width, signed or unsigned. +/// +/// Two 32-bit values can never overflow the 64-bit range, so reading them through a +/// sign-extending accessor reports success for a case that must raise `OverflowException`, +/// and yields an `I64` where the stack holds an `int32`. The unsigned half of this was fixed +/// first; the signed half kept the `as_i64` shape and is the regression this pins. +#[test] +fn overflow_checks_use_the_operand_width() { + let ptr = PointerSize::Bit64; + let one: ConstValue = ConstValue::I32(1); + let two: ConstValue = ConstValue::I32(2); + let wide_one: ConstValue = ConstValue::I64(1); + + // Unsigned: 0xFFFF_FFFF + 1 overflows int32, so this must not fold. + let all_ones: ConstValue = ConstValue::I32(-1); + assert_eq!(all_ones.add_checked(&one, true, ptr), None); + + // Signed: i32::MAX + 1 overflows int32. Under `as_i64` both operands widened to 64 bits, + // no overflow was reported, and the wrapping `add` folded this to `i32::MIN` — turning a + // throwing path into a wrong constant. + let max: ConstValue = ConstValue::I32(i32::MAX); + let min: ConstValue = ConstValue::I32(i32::MIN); + assert_eq!(max.add_checked(&one, false, ptr), None); + assert_eq!(min.sub_checked(&one, false, ptr), None); + assert_eq!(max.mul_checked(&two, false, ptr), None); + + // In range, and the result keeps the 32-bit width. + assert_eq!( + two.add_checked(&one, true, ptr), + Some(ConstValue::I32(3)), + "an in-range unsigned add must fold at int32 width" + ); + assert_eq!( + two.add_checked(&one, false, ptr), + Some(ConstValue::I32(3)), + "an in-range signed add must fold at int32 width" + ); + + // The same values at 64-bit width do fit. + let wide: ConstValue = ConstValue::I64(0xFFFF_FFFF); + assert_eq!( + wide.add_checked(&wide_one, true, ptr), + Some(ConstValue::I64(0x1_0000_0000)) + ); +} + +/// A multiply by zero folds through the ordinary overflow check, at the operands' width. +/// +/// The `x * 0 == 0` short-circuit that used to precede the check returned the *zero operand's +/// own* variant, so the result width depended on which side happened to be zero. +#[test] +fn mul_ovf_by_zero_folds_at_the_operand_width() { + let ptr = PointerSize::Bit64; + + let hundred: ConstValue = ConstValue::I32(100); + let zero: ConstValue = ConstValue::I32(0); + assert_eq!( + hundred.mul_checked(&zero, false, ptr), + Some(ConstValue::I32(0)) + ); + + let wide_zero: ConstValue = ConstValue::I64(0); + let wide_hundred: ConstValue = ConstValue::I64(100); + assert_eq!( + wide_zero.mul_checked(&wide_hundred, false, ptr), + Some(ConstValue::I64(0)) + ); +} diff --git a/dotscope/src/deobfuscation/config.rs b/dotscope/src/deobfuscation/config.rs index e8cdbd29..d9f6c47b 100644 --- a/dotscope/src/deobfuscation/config.rs +++ b/dotscope/src/deobfuscation/config.rs @@ -5,7 +5,10 @@ use std::time::Duration; -use crate::{deobfuscation::SmartRenameConfig, emulation::TracingConfig}; +use crate::{ + deobfuscation::SmartRenameConfig, + emulation::{EmulationLimits, TracingConfig}, +}; /// Fixpoint iteration limits. #[derive(Debug, Clone)] @@ -123,6 +126,46 @@ pub struct EmulationConfig { pub warmup_timeout: Duration, /// Number of retry passes for warmup methods with dependency chains. pub warmup_retry_passes: usize, + /// Maximum emulations a single deobfuscation run may perform, or 0 for unlimited. + /// + /// [`max_instructions`](Self::max_instructions) and [`timeout`](Self::timeout) bound one + /// emulation. Neither bounds how many a run performs: the decryption pass emulates once + /// per distinct call site with constant arguments, and its value cache is keyed on + /// `(decryptor, args)`, so a loop calling a decryptor with a varying key misses the cache + /// every iteration. This is the ceiling on the run as a whole. + pub max_emulations: usize, +} + +impl EmulationConfig { + /// Limits for one per-method emulation. + /// + /// A template process is warmed up once under [`warmup_timeout`](Self::warmup_timeout), + /// which is deliberately generous because warmup executes module and type initialisers. + /// Every per-method execution is forked from that template, and is a different job with + /// its own budget: [`timeout`](Self::timeout). + /// + /// Forking shares the emulator's configuration `Arc` by default, so without applying + /// these explicitly a per-method execution silently inherits the warmup budget — which is + /// what left `timeout` written and never read, and let a single method run under a wall + /// clock up to 120x larger than documented. + /// + /// Only the two per-method fields are overridden; everything else is inherited from + /// `base`, which must be the limits of the template being forked + /// ([`EmulationProcess::limits`]). Defaulting the remainder instead would silently + /// *raise* the call-depth ceiling and *lower* the heap ceiling relative to the template + /// the fork inherits its warmed heap from — 1000 and 256 MiB against the 100 and 512 MiB + /// the template pool builds with — so a sample whose warmup allocates past 256 MiB would + /// fail every per-method decryption on a limit it was never intended to be held to. + /// + /// [`EmulationProcess::limits`]: crate::emulation::EmulationProcess::limits + #[must_use] + pub fn execution_limits(&self, base: &EmulationLimits) -> EmulationLimits { + EmulationLimits { + max_instructions: self.max_instructions, + timeout_ms: u64::try_from(self.timeout.as_millis()).unwrap_or(u64::MAX), + ..base.clone() + } + } } impl Default for EmulationConfig { @@ -133,6 +176,7 @@ impl Default for EmulationConfig { tracing: None, warmup_timeout: Duration::from_secs(60), warmup_retry_passes: 5, + max_emulations: 100_000, } } } @@ -452,6 +496,7 @@ impl EngineConfig { timeout: Duration::from_millis(500), warmup_timeout: Duration::from_secs(30), warmup_retry_passes: 2, + max_emulations: 10_000, ..Default::default() }, resolution_strategies: vec![ResolutionStrategy::Static, ResolutionStrategy::Pattern], @@ -491,6 +536,7 @@ impl EngineConfig { timeout: Duration::from_secs(30), warmup_timeout: Duration::from_secs(120), warmup_retry_passes: 8, + max_emulations: 1_000_000, ..Default::default() }, unflattening: UnflatteningThresholds { @@ -865,4 +911,79 @@ mod tests { assert!(ResolutionStrategy::Emulation.requires_emulation()); assert!(!ResolutionStrategy::Static.requires_emulation()); } + /// A per-method execution must run under `timeout`, not the template's `warmup_timeout`. + /// + /// Forking shares the emulator's configuration `Arc`, so without applying these limits + /// explicitly the documented per-method budget is written and never read and the method + /// runs under the warmup budget instead. + #[test] + fn execution_limits_use_the_per_method_timeout() { + let config = EmulationConfig::default(); + let limits = config.execution_limits(&EmulationLimits::default()); + + assert_eq!( + limits.timeout_ms, + u64::try_from(config.timeout.as_millis()).unwrap() + ); + assert_ne!( + limits.timeout_ms, + u64::try_from(config.warmup_timeout.as_millis()).unwrap(), + "a per-method execution must not inherit the warmup budget" + ); + assert_eq!(limits.max_instructions, config.max_instructions); + } + + /// The `fast()` preset tightens the per-method budget; the derivation must follow the + /// configuration rather than any default. + #[test] + fn execution_limits_follow_the_preset() { + let fast = EngineConfig::fast(); + let base = EmulationLimits::default(); + + assert_eq!( + fast.emulation.execution_limits(&base).timeout_ms, + u64::try_from(fast.emulation.timeout.as_millis()).unwrap() + ); + assert_eq!( + fast.emulation.execution_limits(&base).max_instructions, + fast.emulation.max_instructions + ); + } + + /// Everything the per-method budget does not name must come from the template being + /// forked, not from [`EmulationLimits::default`]. + /// + /// The template pool builds with a call depth of 100 and a 512 MiB heap, and a fork + /// inherits the warmed heap by copy-on-write. Defaulting the unnamed fields instead + /// raised the depth to 1000 and *lowered* the heap to 256 MiB, so a sample whose warmup + /// allocated past 256 MiB failed every per-method decryption on a ceiling the template + /// had never been held to. + #[test] + fn execution_limits_inherit_every_unnamed_field_from_the_template() { + let config = EmulationConfig::default(); + let template = EmulationLimits { + max_call_depth: 100, + max_heap_bytes: 512 * 1024 * 1024, + max_unmanaged_bytes: 7 * 1024 * 1024, + ..EmulationLimits::default() + }; + + let limits = config.execution_limits(&template); + + assert_eq!(limits.max_call_depth, template.max_call_depth); + assert_eq!(limits.max_heap_bytes, template.max_heap_bytes); + assert_eq!(limits.max_unmanaged_bytes, template.max_unmanaged_bytes); + assert_ne!( + limits.max_heap_bytes, + EmulationLimits::default().max_heap_bytes, + "the template's heap ceiling must survive the derivation" + ); + + // Only the two per-method fields are overridden. + assert_eq!(limits.max_instructions, config.max_instructions); + assert_eq!( + limits.timeout_ms, + u64::try_from(config.timeout.as_millis()).unwrap() + ); + } } diff --git a/dotscope/src/deobfuscation/decryptors.rs b/dotscope/src/deobfuscation/decryptors.rs index 80676d43..c9387596 100644 --- a/dotscope/src/deobfuscation/decryptors.rs +++ b/dotscope/src/deobfuscation/decryptors.rs @@ -52,7 +52,10 @@ //! } //! ``` -use std::collections::HashSet; +use std::{ + collections::HashSet, + sync::atomic::{AtomicUsize, Ordering}, +}; use dashmap::{DashMap, DashSet}; @@ -99,6 +102,16 @@ pub struct DecryptorContext { /// Secondary index for O(1) successful decryption lookups, keyed by (caller, location). decrypted_index: DashSet<(Token, usize)>, + + /// Emulations performed so far in this run. + /// + /// The per-emulation instruction and wall-clock budgets bound one call; nothing bounds + /// how many calls a run makes. The decryption pass emulates once per distinct call site + /// with constant arguments, and [`Self::cache`] is keyed on `(decryptor, args)`, so + /// distinct arguments always miss — a method that calls a decryptor in a loop with a + /// varying key produces one emulation per iteration. This counter is what gives the run + /// as a whole a ceiling. + emulations_performed: AtomicUsize, } /// Record of a successfully decrypted call. @@ -130,6 +143,8 @@ pub enum FailureReason { NonConstantArgs, /// Emulation failed or timed out. EmulationFailed(String), + /// The run's total emulation budget was exhausted before this site was reached. + EmulationBudgetExhausted, /// Couldn't resolve the method target. UnresolvedTarget, /// Return value couldn't be converted to a constant. @@ -151,7 +166,9 @@ impl FailureReason { /// - `NonConstantArgs` - the arguments might become constant in later passes #[must_use] pub fn is_permanent(&self) -> bool { - !matches!(self, Self::NonConstantArgs) + // Budget exhaustion is a property of the run, not of the call site: with a larger + // budget the same site could succeed, so it must not be cached as permanent. + !matches!(self, Self::NonConstantArgs | Self::EmulationBudgetExhausted) } } @@ -163,6 +180,7 @@ impl std::fmt::Display for FailureReason { Self::UnresolvedTarget => write!(f, "unresolved call target"), Self::InvalidReturnValue => write!(f, "invalid return value"), Self::MethodNotFound => write!(f, "method not found"), + Self::EmulationBudgetExhausted => write!(f, "run emulation budget exhausted"), } } } @@ -212,6 +230,35 @@ impl DecryptorContext { Self::default() } + /// Reserves one emulation against the run budget. + /// + /// Returns `false` once `max` emulations have been performed, at which point callers + /// should stop emulating and report the remaining sites as failures rather than + /// continuing. A `max` of 0 means unlimited. + /// + /// The reservation is taken before the emulation runs, so a concurrent pair of callers + /// cannot both pass the check at the limit. + pub fn try_reserve_emulation(&self, max: usize) -> bool { + if max == 0 { + return true; + } + self.emulations_performed + .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |n| { + if n >= max { + None + } else { + Some(n.saturating_add(1)) + } + }) + .is_ok() + } + + /// Returns how many emulations this run has performed. + #[must_use] + pub fn emulations_performed(&self) -> usize { + self.emulations_performed.load(Ordering::Relaxed) + } + /// Registers a method as a known decryptor. /// /// # Arguments @@ -938,4 +985,64 @@ mod tests { assert_eq!(ctx.decryptor_count(), 200); assert_eq!(ctx.total_decrypted(), 200); } + + /// The per-emulation instruction and wall-clock budgets bound one call; nothing bounded + /// how many calls a run makes, and the value cache is keyed on `(decryptor, args)` so a + /// varying key misses it every time. This is that ceiling. + #[test] + fn emulation_budget_stops_the_run_at_the_limit() { + let ctx = DecryptorContext::new(); + + assert!(ctx.try_reserve_emulation(2)); + assert!(ctx.try_reserve_emulation(2)); + assert!( + !ctx.try_reserve_emulation(2), + "third reservation must be refused" + ); + assert_eq!(ctx.emulations_performed(), 2); + } + + /// A limit of zero means unlimited, matching the config's documented encoding. + #[test] + fn emulation_budget_of_zero_is_unlimited() { + let ctx = DecryptorContext::new(); + + for _ in 0..1000 { + assert!(ctx.try_reserve_emulation(0)); + } + } + + /// Reservations must not race: with N threads competing for M slots, exactly M succeed. + #[test] + fn emulation_budget_is_not_oversubscribed_under_contention() { + let ctx = Arc::new(DecryptorContext::new()); + let granted = Arc::new(std::sync::atomic::AtomicUsize::new(0)); + + let handles: Vec<_> = (0..8) + .map(|_| { + let ctx = Arc::clone(&ctx); + let granted = Arc::clone(&granted); + thread::spawn(move || { + for _ in 0..50 { + if ctx.try_reserve_emulation(100) { + granted.fetch_add(1, Ordering::Relaxed); + } + } + }) + }) + .collect(); + for h in handles { + h.join().unwrap(); + } + + assert_eq!(granted.load(Ordering::Relaxed), 100); + } + + /// Budget exhaustion is a property of the run, not the call site, so it must not be + /// cached as a permanent failure — a larger budget would let the same site succeed. + #[test] + fn budget_exhaustion_is_not_a_permanent_failure() { + assert!(!FailureReason::EmulationBudgetExhausted.is_permanent()); + assert!(FailureReason::MethodNotFound.is_permanent()); + } } diff --git a/dotscope/src/deobfuscation/passes/delegates.rs b/dotscope/src/deobfuscation/passes/delegates.rs index b3f360fe..8e676cdf 100644 --- a/dotscope/src/deobfuscation/passes/delegates.rs +++ b/dotscope/src/deobfuscation/passes/delegates.rs @@ -24,8 +24,13 @@ //! //! # Safety //! -//! If warmup fails or a delegate cannot be resolved, those call sites are -//! silently skipped — no false positives are possible. +//! If warmup fails or a delegate cannot be resolved, those call sites are skipped. +//! +//! A call site is also skipped unless the delegate is **open** (no bound receiver) and has +//! **exactly one** invocation-list entry. Neither restriction is incidental: rewriting a +//! multicast delegate to a single call deletes its other targets from the output, and +//! inlining a closed delegate drops the receiver the callee's signature requires. Both +//! skips are logged at debug level so the analyst can see the proxy was left intact. use std::{ collections::{HashMap, HashSet}, @@ -40,7 +45,7 @@ use crate::{ assembly::{FlowType, Instruction, Operand}, compiler::{CompilerContext, EventKind, ModificationScope, SsaPass}, deobfuscation::{utils::build_def_map, EmulationTemplatePool, ProcessCell}, - emulation::{tokens, EmValue, EmulationProcess, HeapObject}, + emulation::{tokens, DelegateEntry, EmValue, EmulationProcess, HeapObject}, metadata::token::Token, CilObject, Result, }; @@ -90,6 +95,53 @@ pub struct DelegateProxyResolutionPass { processed_methods: DashSet, } +/// Why a delegate could not be inlined into a direct call. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub(crate) enum NotInlinable { + /// The invocation list is empty, so there is no target to call. + NoTarget, + /// More than one entry: invoking the delegate invokes all of them. + Multicast(usize), + /// The entry carries a bound receiver that a direct call would have to pass. + ClosedInstance, +} + +impl std::fmt::Display for NotInlinable { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Self::NoTarget => write!(f, "delegate has no invocation targets"), + Self::Multicast(n) => write!(f, "multicast with {n} entries"), + Self::ClosedInstance => write!(f, "closed delegate with a bound receiver"), + } + } +} + +/// Returns the single entry a delegate can be inlined to, or why it cannot be. +/// +/// Only an **open, single-target** delegate qualifies, and neither restriction is incidental: +/// +/// - A multicast delegate invokes *every* entry. Rewriting the call site to one of them +/// deletes the others from the output — precisely the primitive an obfuscator wants, since +/// the surviving entry can be the benign one. (The emulator's own dispatcher starts at +/// `first()`, so picking `last()` did not even agree with the entry that actually runs +/// first.) +/// - A closed delegate carries its receiver in `entry.target`. The rewrite drops the delegate +/// operand and emits the remaining arguments, so inlining one yields a call with one fewer +/// operand than the callee's signature requires — invalid IL, not merely wrong output. +/// +/// Supporting the closed case later means materialising the receiver and prepending it to the +/// argument list, not dropping it. +pub(crate) fn inlinable_entry( + invocation_list: &[DelegateEntry], +) -> std::result::Result<&DelegateEntry, NotInlinable> { + match invocation_list { + [] => Err(NotInlinable::NoTarget), + [entry] if entry.target.is_none() => Ok(entry), + [_] => Err(NotInlinable::ClosedInstance), + many => Err(NotInlinable::Multicast(many.len())), + } +} + impl DelegateProxyResolutionPass { /// Creates a new delegate proxy resolution pass with pre-computed findings. /// @@ -215,7 +267,17 @@ impl DelegateProxyResolutionPass { invocation_list, .. } = obj { - if let Some(entry) = invocation_list.last() { + let entry = match inlinable_entry(&invocation_list) { + Ok(entry) => entry, + Err(reason) => { + log::debug!( + "Leaving delegate proxy for field {field_token} intact: {reason}" + ); + continue; + } + }; + + { let method_token = entry.method_token; // Resolve synthetic DynamicMethod tokens to real metadata tokens. @@ -608,3 +670,65 @@ impl SsaPass for DelegateProxyResolutionPass { self.lazy_process.clear().map_err(Into::into) } } + +#[cfg(test)] +mod tests { + use super::*; + use crate::emulation::HeapRef; + + fn open_entry(token: u32) -> DelegateEntry { + DelegateEntry { + target: None, + method_token: Token::new(token), + } + } + + fn closed_entry(token: u32) -> DelegateEntry { + DelegateEntry { + target: Some(HeapRef::new(1)), + method_token: Token::new(token), + } + } + + /// The only shape that can be inlined into a direct call. + #[test] + fn a_single_open_target_is_inlinable() { + let list = vec![open_entry(0x0600_0001)]; + + assert_eq!( + inlinable_entry(&list).map(|e| e.method_token).ok(), + Some(Token::new(0x0600_0001)) + ); + } + + /// Invoking a multicast delegate invokes every entry, so rewriting the site to one of + /// them deletes the others from the output — an anti-analysis primitive, since the + /// surviving entry can be the benign one. + #[test] + fn a_multicast_delegate_is_left_intact() { + let list = vec![open_entry(0x0600_0001), open_entry(0x0600_0002)]; + + assert_eq!( + inlinable_entry(&list).err(), + Some(NotInlinable::Multicast(2)) + ); + } + + /// A closed delegate carries its receiver in `target`. The rewrite drops the delegate + /// operand, so inlining one emits a call with one fewer operand than the callee's + /// signature requires — invalid IL. + #[test] + fn a_closed_delegate_is_left_intact() { + let list = vec![closed_entry(0x0600_0001)]; + + assert_eq!( + inlinable_entry(&list).err(), + Some(NotInlinable::ClosedInstance) + ); + } + + #[test] + fn an_empty_invocation_list_has_nothing_to_inline() { + assert_eq!(inlinable_entry(&[]).err(), Some(NotInlinable::NoTarget)); + } +} diff --git a/dotscope/src/emulation/memory/addressspace.rs b/dotscope/src/emulation/memory/addressspace.rs index 2b4ee5b4..a998ae80 100644 --- a/dotscope/src/emulation/memory/addressspace.rs +++ b/dotscope/src/emulation/memory/addressspace.rs @@ -32,9 +32,14 @@ //! assert_eq!(data, vec![0xDE, 0xAD, 0xBE, 0xEF]); //! ``` -use std::sync::{ - atomic::{AtomicU64, Ordering}, - Arc, RwLock, +use std::{ + collections::BTreeMap, + ops::Deref, + result::Result as StdResult, + sync::{ + atomic::{AtomicU64, AtomicUsize, Ordering}, + Arc, RwLock, + }, }; use imbl::HashMap as ImHashMap; @@ -171,7 +176,7 @@ impl Default for SharedHeap { } } -impl std::ops::Deref for SharedHeap { +impl Deref for SharedHeap { type Target = ManagedHeap; fn deref(&self) -> &Self::Target { @@ -179,6 +184,13 @@ impl std::ops::Deref for SharedHeap { } } +/// Default ceiling on unmanaged allocations for a newly created address space. +/// +/// Matches the `max_unmanaged_bytes` default in +/// [`ProcessConfig`](crate::emulation::process::ProcessConfig) so that an address space built +/// directly and one built through the process builder behave the same. +pub const DEFAULT_MAX_UNMANAGED_BYTES: usize = 64 * 1024 * 1024; + /// Metadata for a pinned managed array whose native address aliases /// the managed heap data. Reads and writes through the native address /// are transparently delegated to the managed heap's `Vec`. @@ -254,8 +266,15 @@ pub struct AddressSpace { /// Managed .NET heap (shared across threads). heap: SharedHeap, - /// Memory regions (PE images, mapped data, etc.). - regions: RwLock>, + /// Memory regions (PE images, mapped data, etc.), keyed by base address. + /// + /// Ordered by base so a containing region is found with `range(..=address).next_back()` + /// rather than a scan. Every access an emulated program makes to unmanaged memory goes + /// through that lookup, and the region count is attacker-growable: `Marshal.WriteByte` + /// to an unmapped address maps a fresh region, so a linear structure makes both the + /// per-access lookup and the insert-time overlap check scale with how many regions the + /// program has already created. + regions: RwLock>, /// Static field storage. statics: StaticFieldStorage, @@ -294,6 +313,20 @@ pub struct AddressSpace { /// /// Uses `imbl::HashMap` for O(1) fork via structural sharing. pinned_arrays: RwLock>, + + /// Bytes currently committed to unmanaged allocations. + /// + /// Unmanaged allocations (`localloc`, `Marshal.AllocHGlobal`, `Marshal.AllocCoTaskMem`, + /// `VirtualAlloc`) commit real host pages and are not charged against the managed heap + /// budget, so they need their own accounting. + unmanaged_bytes: AtomicUsize, + + /// Ceiling on [`unmanaged_bytes`](Self::unmanaged_bytes). + /// + /// Atomic so it can be adjusted after construction through + /// [`set_max_unmanaged_bytes`](Self::set_max_unmanaged_bytes), which the process builder + /// uses to apply the configured limit to an address space it does not own exclusively. + max_unmanaged_bytes: AtomicUsize, } impl AddressSpace { @@ -321,13 +354,15 @@ impl AddressSpace { pub fn with_config(heap_size: usize, address_space_size: u64) -> Self { Self { heap: SharedHeap::new(heap_size), - regions: RwLock::new(Vec::new()), + regions: RwLock::new(BTreeMap::new()), statics: StaticFieldStorage::new(), next_address: AtomicU64::new(0x1000_0000), // Start at 256MB size: address_space_size, protection_overrides: RwLock::new(ImHashMap::new()), monitor_locks: RwLock::new(ImHashMap::new()), pinned_arrays: RwLock::new(ImHashMap::new()), + unmanaged_bytes: AtomicUsize::new(0), + max_unmanaged_bytes: AtomicUsize::new(DEFAULT_MAX_UNMANAGED_BYTES), } } @@ -344,13 +379,15 @@ impl AddressSpace { pub fn with_heap(heap: SharedHeap) -> Self { Self { heap, - regions: RwLock::new(Vec::new()), + regions: RwLock::new(BTreeMap::new()), statics: StaticFieldStorage::new(), next_address: AtomicU64::new(0x1000_0000), size: 0x1_0000_0000, protection_overrides: RwLock::new(ImHashMap::new()), monitor_locks: RwLock::new(ImHashMap::new()), pinned_arrays: RwLock::new(ImHashMap::new()), + unmanaged_bytes: AtomicUsize::new(0), + max_unmanaged_bytes: AtomicUsize::new(DEFAULT_MAX_UNMANAGED_BYTES), } } @@ -441,8 +478,17 @@ impl AddressSpace { }) })?; - // Check for overlaps - for existing in regions.iter() { + // Only two regions can overlap a new one in a base-ordered map: the last starting at + // or before it, and the first starting after it. Everything else starts earlier and + // ends before that predecessor does, or starts later than the successor. + let base = region.base(); + let predecessor = regions.range(..=base).next_back().map(|(_, r)| r); + let successor = regions + .range(base.saturating_add(1)..) + .next() + .map(|(_, r)| r); + + for existing in [predecessor, successor].into_iter().flatten() { if Self::regions_overlap(existing, ®ion) { return Err(EmulationError::InvalidAddress { address, @@ -452,7 +498,7 @@ impl AddressSpace { } } - regions.push(region); + regions.insert(base, region); Ok(()) } @@ -513,8 +559,7 @@ impl AddressSpace { }) })?; - if let Some(pos) = regions.iter().position(|r| r.base() == base) { - regions.remove(pos); + if regions.remove(&base).is_some() { Ok(()) } else { Err(EmulationError::InvalidAddress { @@ -541,29 +586,97 @@ impl AddressSpace { return result; } + // Validate before allocating. `read_mapped` below checks the range too, but only + // after it has been handed a `len`-sized buffer — so an unmapped address with an + // attacker-chosen length would commit that much host memory before being refused. + // `cpblk` reaches here with a size straight off the evaluation stack, so "refused" + // has to cost nothing. Same rule `init_block` follows: validate first, fill second. + if !self.covers_range(address, len)? { + return Err(EmulationError::InvalidAddress { + address, + reason: format!("read of {len} bytes is not fully mapped"), + } + .into()); + } + let regions = self.regions.read().map_err(|_| { Error::from(EmulationError::InternalError { description: "region lock poisoned".to_string(), }) })?; - for region in regions.iter() { - if region.contains_range(address, len) { - return region.read(address, len).ok_or_else(|| { - EmulationError::InvalidAddress { - address, - reason: "read failed".to_string(), - } - .into() - }); + let mut buffer = vec![0u8; len]; + self.read_mapped(®ions, address, &mut buffer)?; + Ok(buffer) + } + + /// Reads into a caller-supplied buffer, allocating nothing. + /// + /// `read` hands back an owned `Vec`, which makes a 1-, 2-, 4- or 8-byte `ldind` — the + /// interpreter's inner loop — pay a malloc and a free per load. The fixed-size accessors + /// below fill a stack array through this instead. + /// + /// # Errors + /// + /// Returns an error if the range is unmapped, unreadable under its protection, or the + /// region lock is poisoned. + pub fn read_into(&self, address: u64, dest: &mut [u8]) -> Result<()> { + if let Some(result) = self.read_pinned(address, dest.len()) { + let bytes = result?; + if bytes.len() != dest.len() { + return Err(EmulationError::InvalidAddress { + address, + reason: "pinned read length mismatch".to_string(), + } + .into()); } + dest.copy_from_slice(&bytes); + return Ok(()); } - Err(EmulationError::InvalidAddress { - address, - reason: "address not mapped".to_string(), + let regions = self.regions.read().map_err(|_| { + Error::from(EmulationError::InternalError { + description: "region lock poisoned".to_string(), + }) + })?; + + self.read_mapped(®ions, address, dest) + } + + /// Shared body of [`Self::read`] and [`Self::read_into`], with the regions lock held. + fn read_mapped( + &self, + regions: &BTreeMap, + address: u64, + dest: &mut [u8], + ) -> Result<()> { + let Some(region) = Self::region_containing(regions, address) else { + return Err(EmulationError::InvalidAddress { + address, + reason: "address not mapped".to_string(), + } + .into()); + }; + + if !region.contains_range(address, dest.len()) { + return Err(EmulationError::InvalidAddress { + address, + reason: "address not mapped".to_string(), + } + .into()); + } + + self.check_access(region, address, dest.len(), MemoryProtection::READ)?; + + if region.read_into(address, dest) { + Ok(()) + } else { + Err(EmulationError::InvalidAddress { + address, + reason: "read failed".to_string(), + } + .into()) } - .into()) } /// Writes bytes to any mapped region. @@ -589,24 +702,149 @@ impl AddressSpace { }) })?; - for region in regions.iter() { - if region.contains_range(address, data.len()) { - if region.write(address, data) { - return Ok(()); + let Some(region) = Self::region_containing(®ions, address) else { + return Err(EmulationError::InvalidAddress { + address, + reason: "address not mapped".to_string(), + } + .into()); + }; + + if !region.contains_range(address, data.len()) { + return Err(EmulationError::InvalidAddress { + address, + reason: "address not mapped".to_string(), + } + .into()); + } + + self.check_access(region, address, data.len(), MemoryProtection::WRITE)?; + + if region.write(address, data) { + Ok(()) + } else { + // Protection is rejected above, so reaching here means the paged write itself + // failed — a range or page-level fault, not a permission one. + Err(EmulationError::InvalidAddress { + address, + reason: "write failed".to_string(), + } + .into()) + } + } + + /// Rejects an access whose protection does not permit it. + /// + /// Protection is per page, so an access is checked at the first and last page it touches; + /// a region's pages carry uniform protection unless `VirtualProtect` has overridden some + /// of them, and an override is page-aligned, so those two are what can differ. + /// + /// `GUARD` faults on any access regardless of `required`, matching a Windows guard page. + /// + /// Takes the region rather than looking it up, because both callers already hold the + /// regions read lock — re-acquiring it here would be a recursive read acquisition, which + /// `std::sync::RwLock` may deadlock on when a writer is queued between the two. + /// + /// # Errors + /// + /// Returns [`EmulationError::AccessViolation`] when the access is not permitted. + fn check_access( + &self, + region: &MemoryRegion, + address: u64, + len: usize, + required: MemoryProtection, + ) -> Result<()> { + if len == 0 { + return Ok(()); + } + + let last = address.saturating_add(len.saturating_sub(1) as u64); + for probe in [address, last] { + let Some(protection) = self.protection_of(region, probe) else { + continue; + }; + + if protection.contains(MemoryProtection::GUARD) { + return Err(EmulationError::AccessViolation { + address: probe, + reason: "guard page".to_string(), } - return Err(EmulationError::InvalidAddress { - address, - reason: "write failed (possibly read-only)".to_string(), + .into()); + } + + if !protection.contains(required) { + return Err(EmulationError::AccessViolation { + address: probe, + reason: format!("protection {protection:?} does not permit {required:?}"), } .into()); } } - Err(EmulationError::InvalidAddress { - address, - reason: "address not mapped".to_string(), + Ok(()) + } + + /// Resolves the protection of one address inside a region already in hand. + /// + /// Same resolution order as [`Self::get_protection`] — `VirtualProtect` override first, + /// then the region's own (per-PE-section) protection — without the regions lookup. + fn protection_of(&self, region: &MemoryRegion, address: u64) -> Option { + let page_addr = address & !(Self::PAGE_SIZE - 1); + if let Ok(overrides) = self.protection_overrides.read() { + if let Some(&protection) = overrides.get(&page_addr) { + return Some(protection); + } } - .into()) + + region.protection_at(address).ok() + } + + /// Reads a fixed-size little-endian value without allocating. + /// + /// # Errors + /// + /// Returns an error if the range is unmapped or unreadable under its protection. + pub fn read_exact(&self, address: u64) -> Result<[u8; N]> { + let mut buffer = [0u8; N]; + self.read_into(address, &mut buffer)?; + Ok(buffer) + } + + /// Reads one byte. + /// + /// # Errors + /// + /// See [`Self::read_exact`]. + pub fn read_u8(&self, address: u64) -> Result { + Ok(u8::from_le_bytes(self.read_exact::<1>(address)?)) + } + + /// Reads a little-endian `u16`. + /// + /// # Errors + /// + /// See [`Self::read_exact`]. + pub fn read_u16(&self, address: u64) -> Result { + Ok(u16::from_le_bytes(self.read_exact::<2>(address)?)) + } + + /// Reads a little-endian `u32`. + /// + /// # Errors + /// + /// See [`Self::read_exact`]. + pub fn read_u32(&self, address: u64) -> Result { + Ok(u32::from_le_bytes(self.read_exact::<4>(address)?)) + } + + /// Reads a little-endian `u64`. + /// + /// # Errors + /// + /// See [`Self::read_exact`]. + pub fn read_u64(&self, address: u64) -> Result { + Ok(u64::from_le_bytes(self.read_exact::<8>(address)?)) } /// Returns `true` if the address is within a mapped region. @@ -629,7 +867,7 @@ impl AddressSpace { let Ok(regions) = self.regions.read() else { return false; }; - regions.iter().any(|r| r.contains(address)) + Self::region_containing(®ions, address).is_some() } /// Returns the region containing the given address, if any. @@ -640,7 +878,7 @@ impl AddressSpace { #[must_use] pub fn get_region(&self, address: u64) -> Option { let regions = self.regions.read().ok()?; - regions.iter().find(|r| r.contains(address)).cloned() + Self::region_containing(®ions, address).cloned() } /// Returns the memory protection flags for an address. @@ -665,10 +903,7 @@ impl AddressSpace { // Fall back to region's inherent protection let regions = self.regions.read().ok()?; - regions - .iter() - .find(|r| r.contains(address)) - .and_then(|r| r.protection_at(address).ok()) + Self::region_containing(®ions, address).and_then(|r| r.protection_at(address).ok()) } /// Sets the memory protection for a range of addresses. @@ -792,8 +1027,78 @@ impl AddressSpace { /// /// Returns an error if the mapping fails. pub fn alloc_unmanaged(&self, size: usize) -> Result { + // Unmanaged allocations commit real host pages and are invisible to the managed heap + // budget, so they are charged here — before the region is constructed, since + // `MemoryRegion::unmanaged_alloc` allocates the backing store eagerly. + let max = self.max_unmanaged_bytes.load(Ordering::Relaxed); + let current = self.unmanaged_bytes.load(Ordering::Relaxed); + if current.saturating_add(size) > max { + return Err(EmulationError::HeapMemoryLimitExceeded { + current, + limit: max, + } + .into()); + } + let region = MemoryRegion::unmanaged_alloc(0, size); - self.map(region) + let address = self.map(region)?; + self.unmanaged_bytes.fetch_add(size, Ordering::Relaxed); + Ok(address) + } + + /// Maps a zero-filled region at a fixed address, charged against the unmanaged budget. + /// + /// This backs the `Marshal.Write*` auto-allocation path, where emulated code writes to an + /// address that is not mapped and the emulator materialises memory there rather than + /// aborting. The address is attacker-chosen and the loop is driven by ordinary CIL, so + /// without a ceiling each unmapped page written to commits real host pages that are never + /// reclaimed. Charging the same counter as [`Self::alloc_unmanaged`] also bounds the + /// region *count*, since every auto-allocation is the same fixed size. + /// + /// # Errors + /// + /// Returns [`EmulationError::HeapMemoryLimitExceeded`] once the unmanaged budget is + /// exhausted, or an error if the range overlaps an existing mapping. + pub fn alloc_unmanaged_at(&self, address: u64, size: usize, label: &str) -> Result<()> { + let max = self.max_unmanaged_bytes.load(Ordering::Relaxed); + let current = self.unmanaged_bytes.load(Ordering::Relaxed); + if current.saturating_add(size) > max { + return Err(EmulationError::HeapMemoryLimitExceeded { + current, + limit: max, + } + .into()); + } + + let region = MemoryRegion::mapped_data( + address, + &vec![0u8; size], + label, + MemoryProtection::READ_WRITE, + ); + self.map_at(address, region)?; + self.unmanaged_bytes.fetch_add(size, Ordering::Relaxed); + Ok(()) + } + + /// Sets the ceiling on total unmanaged allocation, in bytes. + /// + /// Applied after construction because the process builder configures limits on an address + /// space it shares rather than owns. + pub fn set_max_unmanaged_bytes(&self, max: usize) { + self.max_unmanaged_bytes.store(max, Ordering::Relaxed); + } + + /// Returns the number of bytes currently committed to unmanaged allocations. + #[must_use] + pub fn unmanaged_bytes(&self) -> usize { + self.unmanaged_bytes.load(Ordering::Relaxed) + } + + /// Returns the ceiling on unmanaged allocation, in bytes. + #[must_use] + pub fn max_unmanaged_bytes(&self) -> usize { + self.max_unmanaged_bytes.load(Ordering::Relaxed) } /// Frees unmanaged memory previously allocated with [`alloc_unmanaged`](Self::alloc_unmanaged). @@ -813,14 +1118,28 @@ impl AddressSpace { }) })?; - let is_unmanaged = regions - .iter() - .any(|r| r.base() == address && r.is_unmanaged_alloc()); + let freed_size = regions + .get(&address) + .filter(|r| r.is_unmanaged_alloc()) + .map(MemoryRegion::size); drop(regions); - if is_unmanaged { - self.unmap(address) + if let Some(size) = freed_size { + self.unmap(address)?; + // Return the budget so an alloc/free cycle cannot ratchet the accounted total + // upwards and starve later allocations. + // + // Saturating rather than a plain `fetch_sub`: a region can be flagged as an + // unmanaged allocation without having been charged here (a forked address space + // carries regions over, for instance), and a wrapping subtract would underflow the + // counter to near `usize::MAX` and reject every later allocation. + let _ = self.unmanaged_bytes.fetch_update( + Ordering::Relaxed, + Ordering::Relaxed, + |current| Some(current.saturating_sub(size)), + ); + Ok(()) } else { Err(EmulationError::InvalidAddress { address, @@ -833,11 +1152,71 @@ impl AddressSpace { /// Reserves an address range without creating a backing memory region. /// /// Used for pinned arrays where the backing store is the managed heap. - /// The returned address is guaranteed not to conflict with other allocations. - pub fn reserve_address_range(&self, size: usize) -> u64 { - let aligned_size = size.saturating_add(0xFFF) & !0xFFF; // Align to 4KB - self.next_address - .fetch_add(aligned_size as u64, Ordering::SeqCst) + /// + /// The cursor starts at `0x1000_0000` — the default `ImageBase` the C# compiler emits — + /// so it walks straight into a mapped PE image on any host that opted into + /// `ProcessBuilder::map_pe_image`. Bumping it blindly there hands out a base that aliases + /// the image: `read`/`write` consult pins before regions, so the pin would silently + /// intercept accesses to the image and redirect them into a managed array. The same + /// cursor also feeds `map`, so once it is inside an image every `alloc_unmanaged` fails + /// on the overlap check. This therefore skips past any range that overlaps a mapping. + /// + /// # Returns + /// + /// The reserved base address, or `None` if no free range of this size remains below the + /// address space limit. + pub fn reserve_address_range(&self, size: usize) -> Option { + let aligned_size = u64::try_from(size.saturating_add(0xFFF) & !0xFFF).ok()?; + let regions = self.regions.read().ok()?; + let region_end = |region: &MemoryRegion| { + region + .base() + .saturating_add(u64::try_from(region.size()).unwrap_or(u64::MAX)) + }; + + loop { + let base = self.next_address.load(Ordering::SeqCst); + let end = base.checked_add(aligned_size)?; + if end > self.size { + return None; + } + + // Regions never overlap, so the only ones that can intersect [base, end) are the + // last starting before it — if it reaches past base — and the first starting + // inside it. + let blocker = regions + .range(..base) + .next_back() + .map(|(_, region)| region) + .filter(|region| region_end(region) > base) + .or_else(|| regions.range(base..end).next().map(|(_, region)| region)); + + let next = match blocker { + // Resume at the page after the blocking region and try again. + Some(region) => (region_end(region).checked_add(0xFFF)?) & !0xFFF, + None => { + if self + .next_address + .compare_exchange(base, end, Ordering::SeqCst, Ordering::SeqCst) + .is_ok() + { + return Some(base); + } + continue; + } + }; + + // Another thread may have moved the cursor further along already; never rewind it. + let _ = self + .next_address + .fetch_update(Ordering::SeqCst, Ordering::SeqCst, |current| { + if current >= next { + None + } else { + Some(next) + } + }); + } } /// Registers a pinned managed array so that native pointer access @@ -860,14 +1239,28 @@ impl AddressSpace { element_size: usize, element_count: usize, ) -> Result<()> { + let byte_length = element_size.checked_mul(element_count).ok_or_else(|| { + EmulationError::InternalError { + description: "pinned array byte length overflow".to_string(), + } + })?; + + // Pins are consulted before regions on every access, so one registered over a mapped + // range would shadow it: reads and writes to the mapping would be answered from the + // managed array instead. `reserve_address_range` picks bases that avoid this, but the + // base is a parameter here, so the invariant is enforced rather than assumed. + if byte_length > 0 && self.region_overlaps_range(base_addr, byte_length)? { + return Err(EmulationError::InvalidAddress { + address: base_addr, + reason: "pinned array would shadow a mapped region".to_string(), + } + .into()); + } + let entry = PinnedArrayEntry { array_ref, base_addr, - byte_length: element_size.checked_mul(element_count).ok_or_else(|| { - EmulationError::InternalError { - description: "pinned array byte length overflow".to_string(), - } - })?, + byte_length, element_size, }; let mut pins = self.pinned_arrays.write().map_err(|_| { @@ -879,6 +1272,21 @@ impl AddressSpace { Ok(()) } + /// Returns the native base address an array is already pinned at, if any. + /// + /// Lets a re-pin reuse the existing reservation instead of adding another entry for the + /// same array — the pin table is scanned on every unmanaged access, so duplicates cost + /// every later access, not just the memory. + #[must_use] + pub fn pinned_base_of(&self, array_ref: HeapRef) -> Option { + let pins = self.pinned_arrays.read().ok()?; + let base = pins + .values() + .find(|entry| entry.array_ref == array_ref) + .map(|entry| entry.base_addr); + base + } + /// Attempts to read from a pinned array region. /// /// Returns `None` if the address is not within a pinned array range. @@ -1119,8 +1527,111 @@ impl AddressSpace { return Ok(()); } - let data = vec![value; size]; - self.write(address, &data) + // `size` comes from the emulated stack via `initblk`. Building the whole fill buffer + // first would commit it to the host allocator before the destination is checked, so an + // out-of-range address with a huge size costs the memory anyway and only then fails. + // Validate first, fill second. + if !self.covers_range(address, size)? { + return Err(EmulationError::InvalidAddress { + address, + reason: format!("initblk destination range of {size} bytes is not mapped"), + } + .into()); + } + + // Fill through a fixed-size buffer so peak overhead is constant in `size`. + const CHUNK: usize = 64 * 1024; + let chunk_len = size.min(CHUNK); + let chunk = vec![value; chunk_len]; + + let mut written: usize = 0; + while written < size { + let remaining = size.saturating_sub(written); + let n = remaining.min(chunk_len); + let slice = chunk + .get(..n) + .ok_or_else(|| EmulationError::InternalError { + description: "initblk chunk slice out of range".to_string(), + })?; + let offset = u64::try_from(written).map_err(|_| EmulationError::InvalidAddress { + address, + reason: "initblk offset exceeds address width".to_string(), + })?; + let target = + address + .checked_add(offset) + .ok_or_else(|| EmulationError::InvalidAddress { + address, + reason: "initblk range overflows the address space".to_string(), + })?; + self.write(target, slice)?; + written = written.saturating_add(n); + } + + Ok(()) + } + + /// Reports whether any mapped region intersects `[address, address + size)`. + /// + /// Unlike [`Self::covers_range`] this asks about *intersection*, not containment, and + /// ignores pins: it exists to keep a new pin from being laid over a mapping. + fn region_overlaps_range(&self, address: u64, size: usize) -> Result { + let len = u64::try_from(size).map_err(|_| EmulationError::InvalidAddress { + address, + reason: "range length exceeds the address width".to_string(), + })?; + let Some(end) = address.checked_add(len) else { + return Ok(false); + }; + + let regions = self.regions.read().map_err(|_| { + Error::from(EmulationError::InternalError { + description: "region lock poisoned".to_string(), + }) + })?; + + let predecessor_overlaps = + regions + .range(..address) + .next_back() + .is_some_and(|(_, region)| { + region + .base() + .saturating_add(u64::try_from(region.size()).unwrap_or(u64::MAX)) + > address + }); + + Ok(predecessor_overlaps || regions.range(address..end).next().is_some()) + } + + /// Reports whether a contiguous range is backed by a pinned array or a mapped region. + /// + /// Used to validate a destination before committing memory proportional to its size. + fn covers_range(&self, address: u64, size: usize) -> Result { + let len = u64::try_from(size).map_err(|_| EmulationError::InvalidAddress { + address, + reason: "range length exceeds the address width".to_string(), + })?; + let Some(end) = address.checked_add(len) else { + return Ok(false); + }; + + if let Ok(pins) = self.pinned_arrays.read() { + for entry in pins.values() { + let pin_end = entry.base_addr.saturating_add(entry.byte_length as u64); + if address >= entry.base_addr && end <= pin_end { + return Ok(true); + } + } + } + + let regions = self.regions.read().map_err(|_| { + Error::from(EmulationError::InternalError { + description: "region lock poisoned".to_string(), + }) + })?; + Ok(Self::region_containing(®ions, address) + .is_some_and(|r| r.contains_range(address, size))) } /// Maps a PE image at its preferred base address. @@ -1174,7 +1685,7 @@ impl AddressSpace { pub fn regions(&self) -> Vec<(u64, usize, String)> { match self.regions.read() { Ok(regions) => regions - .iter() + .values() .map(|r| (r.base(), r.size(), r.label().to_string())) .collect(), Err(_) => Vec::new(), @@ -1185,11 +1696,26 @@ impl AddressSpace { #[must_use] pub fn mapped_size(&self) -> usize { match self.regions.read() { - Ok(regions) => regions.iter().map(MemoryRegion::size).sum(), + Ok(regions) => regions.values().map(MemoryRegion::size).sum(), Err(_) => 0, } } + /// Finds the region containing `address`, in `O(log regions)`. + /// + /// Regions never overlap — [`Self::map_at`] rejects a mapping that would create one — so + /// the only candidate is the last region starting at or before the address. + fn region_containing( + regions: &BTreeMap, + address: u64, + ) -> Option<&MemoryRegion> { + regions + .range(..=address) + .next_back() + .map(|(_, region)| region) + .filter(|region| region.contains(address)) + } + /// Checks if two regions overlap in the address space. /// /// Uses the standard interval overlap test: two intervals [a_start, a_end) @@ -1316,7 +1842,7 @@ impl AddressSpace { // Clone regions - this is cheap because pages use CoW internally let regions = match self.regions.read() { Ok(r) => r.clone(), - Err(_) => Vec::new(), + Err(_) => BTreeMap::new(), }; Self { @@ -1336,6 +1862,8 @@ impl AddressSpace { monitor_locks: RwLock::new(ImHashMap::new()), // Fresh pinned array mappings pinned_arrays: RwLock::new(ImHashMap::new()), + unmanaged_bytes: AtomicUsize::new(0), + max_unmanaged_bytes: AtomicUsize::new(DEFAULT_MAX_UNMANAGED_BYTES), } } @@ -1396,8 +1924,8 @@ impl AddressSpace { description: "address space regions", })? .iter() - .map(|region| region.fork()) - .collect::, _>>()?; + .map(|(&base, region)| region.fork().map(|forked| (base, forked))) + .collect::, _>>()?; // Fork protection overrides (O(1) due to imbl) let protection_overrides = self @@ -1443,6 +1971,10 @@ impl AddressSpace { monitor_locks: RwLock::new(monitor_locks), // Fork pinned array mappings - O(1) due to imbl pinned_arrays: RwLock::new(pinned_arrays), + // The forked regions are carried over, so their bytes stay charged; the fork + // inherits the parent's ceiling. + unmanaged_bytes: AtomicUsize::new(self.unmanaged_bytes.load(Ordering::Relaxed)), + max_unmanaged_bytes: AtomicUsize::new(self.max_unmanaged_bytes.load(Ordering::Relaxed)), }) } } @@ -1457,7 +1989,7 @@ mod tests { }, EmValue, }, - metadata::token::Token, + metadata::{token::Token, typesystem::CilFlavor}, }; #[test] @@ -1488,6 +2020,90 @@ mod tests { assert_eq!(read, vec![0xCA, 0xFE]); } + /// Protection is tracked per page; an access that its page forbids must fault rather + /// than succeed silently, or `VirtualProtect` emulation is pure bookkeeping and an + /// obfuscator probing by writing where a real process faults detects the emulator. + #[test] + fn write_to_read_only_memory_faults() { + let space = AddressSpace::new(); + space.map_data(0x1000, &[0u8; 16], "test").unwrap(); + space + .set_protection(0x1000, 16, MemoryProtection::READ) + .unwrap(); + + assert!(space.read(0x1000, 4).is_ok(), "reads must still work"); + assert!(space.write(0x1000, &[0xFF]).is_err()); + } + + /// A guard page faults on *any* access, read included. + #[test] + fn guard_page_faults_on_read_and_write() { + let space = AddressSpace::new(); + space.map_data(0x2000, &[0u8; 16], "test").unwrap(); + space + .set_protection( + 0x2000, + 16, + MemoryProtection::READ_WRITE | MemoryProtection::GUARD, + ) + .unwrap(); + + assert!(space.read(0x2000, 1).is_err()); + assert!(space.write(0x2000, &[0x01]).is_err()); + } + + /// Fixed-size reads must agree with the allocating path byte for byte. + #[test] + fn fixed_size_reads_match_the_allocating_read() { + let space = AddressSpace::new(); + space + .map_data( + 0x3000, + &[0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88], + "test", + ) + .unwrap(); + + assert_eq!(space.read_u8(0x3000).unwrap(), 0x11); + assert_eq!(space.read_u16(0x3000).unwrap(), 0x2211); + assert_eq!(space.read_u32(0x3000).unwrap(), 0x4433_2211); + assert_eq!(space.read_u64(0x3000).unwrap(), 0x8877_6655_4433_2211); + assert_eq!( + space.read_exact::<4>(0x3000).unwrap().to_vec(), + space.read(0x3000, 4).unwrap() + ); + assert!(space.read_u32(0x9000).is_err(), "unmapped must still fault"); + } + + /// The reservation cursor starts at 0x1000_0000 — the default managed `ImageBase` — so + /// it must step over a mapping rather than hand out a base that aliases it. + #[test] + fn reserved_ranges_skip_mapped_regions() { + let space = AddressSpace::new(); + let cursor = space.reserve_address_range(0x1000).unwrap(); + + // Map exactly where the next reservation would otherwise land. + let blocked = cursor + 0x1000; + space.map_data(blocked, &[0u8; 0x2000], "image").unwrap(); + + let next = space.reserve_address_range(0x1000).unwrap(); + assert!( + next >= blocked + 0x2000, + "reservation {next:#x} overlaps the region at {blocked:#x}" + ); + } + + /// Pins are consulted before regions on every access, so one laid over a mapping would + /// shadow it. + #[test] + fn pinned_array_cannot_shadow_a_mapped_region() { + let space = AddressSpace::new(); + space.map_data(0x4000, &[0u8; 0x1000], "image").unwrap(); + let array = space.managed_heap().alloc_array(CilFlavor::I4, 4).unwrap(); + + assert!(space.register_pinned_array(0x4000, array, 4, 4).is_err()); + } + #[test] fn test_static_fields() { let space = AddressSpace::new(); @@ -1692,4 +2308,36 @@ mod tests { // Original doesn't see it assert!(heap.get_string(new_ref).is_err()); } + + /// An unmapped read must be refused without first allocating a buffer for it. + /// + /// `read` built its destination `Vec` before `read_mapped` validated the range, so the + /// length — which arrives from the emulated evaluation stack via `cpblk` — was committed + /// to the host allocator on the reject path. At these sizes that is `handle_alloc_error` + /// and an uncatchable abort of the analysis host, not an `Err`. The value below is far + /// beyond any plausible mapping, so this test asserts the refusal is decided from the + /// region index rather than by trying and failing to allocate. + #[test] + fn unmapped_read_is_refused_without_allocating() { + let space = AddressSpace::new(); + space.map_data(0x1000, &[0u8; 16], "test").unwrap(); + + // Wholly unmapped address. + assert!(space.read(0xDEAD_0000, 1 << 40).is_err()); + // Mapped base, but the range runs off the end of the region. + assert!(space.read(0x1000, 1 << 40).is_err()); + // The in-bounds case still works. + assert_eq!(space.read(0x1000, 4).unwrap(), vec![0u8; 4]); + } + + /// `cpblk` reaches `copy_block` with a size taken straight off the evaluation stack, so + /// the same refusal has to hold there — this is the path that made the ordering bug + /// reachable from three emulated instructions. + #[test] + fn copy_block_with_an_unmapped_source_is_refused_without_allocating() { + let space = AddressSpace::new(); + space.map_data(0x1000, &[0u8; 16], "test").unwrap(); + + assert!(space.copy_block(0x1000, 0xDEAD_0000, 1 << 40).is_err()); + } } diff --git a/dotscope/src/emulation/runtime/appdomain.rs b/dotscope/src/emulation/runtime/appdomain.rs index c80f7b18..9e7d6de6 100644 --- a/dotscope/src/emulation/runtime/appdomain.rs +++ b/dotscope/src/emulation/runtime/appdomain.rs @@ -107,7 +107,7 @@ use crate::{emulation::HeapRef, metadata::token::Token, CilObject}; /// // The domain is ready for emulation /// assert!(domain.executing_assembly().is_some()); /// ``` -#[derive(Default)] +#[derive(Clone, Default)] pub struct AppDomainState { /// Loaded assemblies indexed by their simple name. /// @@ -444,13 +444,25 @@ impl AppDomainState { /// to associate frames with their /// originating assembly. /// + /// Returns `None` when the domain already holds `max` assemblies. Emulated code drives + /// this list through `Assembly.Load(byte[])`, and each entry retains a whole parsed + /// metadata graph in host memory that no heap budget accounts for, so the list has to be + /// bounded by something. The caller decides what to do on refusal — the .NET-visible + /// behaviour is a failed load, not a silently dropped registration. + /// /// # Arguments /// /// * `asm` - The parsed [`CilObject`] wrapped in `Arc` - pub fn register_parsed_assembly(&mut self, asm: Arc) -> usize { + /// * `max` - Maximum assemblies this domain may hold, from + /// [`EmulationLimits::max_loaded_assemblies`](crate::emulation::process::EmulationLimits::max_loaded_assemblies) + pub fn register_parsed_assembly(&mut self, asm: Arc, max: usize) -> Option { + if self.loaded_cilobjects.len() >= max { + return None; + } + let index = self.loaded_cilobjects.len(); self.loaded_cilobjects.push(asm); - index + Some(index) } /// Retrieves a previously registered parsed assembly by index. @@ -505,6 +517,60 @@ mod tests { assert!(domain.loaded_assemblies().next().is_none()); } + /// Loads the smallest sample available; only its identity as a parsed assembly matters. + fn sample_assembly() -> Arc { + let path = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests/samples/WindowsBase.dll"); + Arc::new(CilObject::from_path(&path).expect("sample assembly must load")) + } + + /// Emulated code drives this list through `Assembly.Load(byte[])`, so it must refuse to + /// grow past the configured limit rather than retain a parsed assembly per call. + #[test] + fn register_parsed_assembly_refuses_past_the_cap() { + let mut domain = AppDomainState::new(); + let asm = sample_assembly(); + + assert_eq!( + domain.register_parsed_assembly(Arc::clone(&asm), 2), + Some(0) + ); + assert_eq!( + domain.register_parsed_assembly(Arc::clone(&asm), 2), + Some(1) + ); + assert_eq!(domain.register_parsed_assembly(Arc::clone(&asm), 2), None); + + assert_eq!(domain.parsed_assembly_count(), 2); + } + + /// A cap of zero must refuse everything rather than wrap into "unlimited". + #[test] + fn register_parsed_assembly_honours_a_zero_cap() { + let mut domain = AppDomainState::new(); + + assert_eq!(domain.register_parsed_assembly(sample_assembly(), 0), None); + assert_eq!(domain.parsed_assembly_count(), 0); + } + + /// Forks execute in parallel, so an assembly one fork loads must not appear in another — + /// otherwise a planted type steers a sibling's method resolution. + #[test] + fn cloning_the_domain_keeps_later_registrations_local() { + let mut parent = AppDomainState::new(); + parent.register_parsed_assembly(sample_assembly(), 8); + + let mut fork = parent.clone(); + fork.register_parsed_assembly(sample_assembly(), 8); + + assert_eq!(fork.parsed_assembly_count(), 2); + assert_eq!( + parent.parsed_assembly_count(), + 1, + "a fork's load must not be visible to the parent" + ); + } + #[test] fn test_register_assembly() { let mut domain = AppDomainState::new(); diff --git a/dotscope/src/emulation/thread/state.rs b/dotscope/src/emulation/thread/state.rs index 6a9656e1..21c21d9f 100644 --- a/dotscope/src/emulation/thread/state.rs +++ b/dotscope/src/emulation/thread/state.rs @@ -282,7 +282,7 @@ pub struct ThreadCallFrame { /// This enables cross-assembly execution: when a method from a dynamically /// loaded assembly calls another method, the controller uses this index to /// fetch instructions and resolve metadata from the correct assembly. - assembly_index: Option, + assembly_index: Option, } impl ThreadCallFrame { @@ -520,7 +520,7 @@ impl ThreadCallFrame { /// Sets the assembly index for this frame. /// /// `None` = primary assembly, `Some(i)` = i-th dynamically loaded assembly. - pub fn set_assembly_index(&mut self, index: Option) { + pub fn set_assembly_index(&mut self, index: Option) { self.assembly_index = index; } @@ -528,7 +528,7 @@ impl ThreadCallFrame { /// /// `None` = primary assembly, `Some(i)` = i-th dynamically loaded assembly. #[must_use] - pub fn assembly_index(&self) -> Option { + pub fn assembly_index(&self) -> Option { self.assembly_index } @@ -937,8 +937,24 @@ impl EmulationThread { /// Pops and returns the current call frame. /// /// Used when returning from a method. + /// + /// Also discards any cleanup handlers still queued against the popped method. Such an entry + /// can never run correctly — the handler IL reads locals, arguments and the evaluation stack + /// from whatever frame happens to be current — and left in place it accumulates for the + /// lifetime of the emulation. + /// + /// The check is against the *remaining* call stack rather than the popped method alone, + /// because a recursive method occupies several frames at once and the outer frames' entries + /// are still live. pub fn pop_frame(&mut self) -> Option { - self.call_stack.pop() + let popped = self.call_stack.pop()?; + + let method = popped.method(); + if !self.call_stack.iter().any(|frame| frame.method() == method) { + self.exception_state.discard_finally_for_method(method); + } + + Some(popped) } /// Returns a reference to the evaluation stack. @@ -1086,6 +1102,16 @@ impl EmulationThread { /// address space. Reads and writes through the native address are /// transparently delegated to the managed heap's `Vec`, /// ensuring a single source of truth. + /// + /// Re-pinning an array that is already pinned returns its existing base rather than + /// reserving a second range. A loop that walks an array with `ldelema` + `conv.u` reaches + /// here on every iteration, so without this the pin table grows once per element access — + /// and every memory access scans it. + /// + /// # Errors + /// + /// Returns an error if the array's size overflows, if no free address range remains, or + /// if pin registration fails. pub fn pin_array_element( &self, array: HeapRef, @@ -1097,7 +1123,16 @@ impl EmulationThread { let length = heap.get_array_length(array).unwrap_or(0); if length == 0 { - return Ok(self.context.address_space.reserve_address_range(1)); + return self + .context + .address_space + .reserve_address_range(1) + .ok_or_else(|| { + Error::from(EmulationError::InvalidAddress { + address: 0, + reason: "no free address range for pinned array".to_string(), + }) + }); } // Determine element size from the element type or first element @@ -1117,15 +1152,28 @@ impl EmulationThread { let total_size = length .checked_mul(elem_size) .ok_or(EmulationError::ArithmeticOverflow)?; - let base_addr = self - .context - .address_space - .reserve_address_range(total_size.max(1)); - // Register the pinned mapping for transparent read/write delegation - self.context - .address_space - .register_pinned_array(base_addr, array, elem_size, length)?; + let base_addr = match self.context.address_space.pinned_base_of(array) { + Some(existing) => existing, + None => { + let base_addr = self + .context + .address_space + .reserve_address_range(total_size.max(1)) + .ok_or_else(|| { + Error::from(EmulationError::InvalidAddress { + address: 0, + reason: "no free address range for pinned array".to_string(), + }) + })?; + + // Register the pinned mapping for transparent read/write delegation + self.context + .address_space + .register_pinned_array(base_addr, array, elem_size, length)?; + base_addr + } + }; let index_offset = index .checked_mul(elem_size) @@ -1489,6 +1537,27 @@ mod tests { use super::*; use crate::test::emulation::{create_test_context, create_test_thread}; + /// The index selects which loaded assembly's metadata a frame executes against, and + /// emulated code grows that list. Narrowing it binds the frame to a different assembly + /// than the one the method token was resolved in — a valid token run against the wrong + /// method table. + #[test] + fn assembly_index_survives_beyond_a_byte() { + let mut frame = ThreadCallFrame::new( + Token::new(0x0600_0001), + None, + 0, + Vec::new(), + Vec::new(), + false, + ); + + for index in [0_u32, 255, 256, 4096, u32::from(u16::MAX) + 1] { + frame.set_assembly_index(Some(index)); + assert_eq!(frame.assembly_index(), Some(index)); + } + } + #[test] fn test_thread_creation() { let thread = create_test_thread(); diff --git a/dotscope/src/error.rs b/dotscope/src/error.rs index 0bf92017..40fc39a0 100644 --- a/dotscope/src/error.rs +++ b/dotscope/src/error.rs @@ -93,7 +93,7 @@ //! propagation in concurrent parsing and analysis operations. //! -use std::io; +use std::{io, sync::Arc}; use thiserror::Error; @@ -117,9 +117,9 @@ impl std::fmt::Display for EmulationError { /// Helper macro for creating malformed data errors with source location information. /// -/// This macro simplifies the creation of [`crate::Error::Malformed`] errors by automatically -/// capturing the current file and line number. It supports both simple string messages -/// and format string patterns with arguments. +/// This macro simplifies the creation of malformed-data errors by automatically capturing the +/// current file and line number. It supports both simple string messages and format string +/// patterns with arguments. /// /// # Arguments /// @@ -128,8 +128,9 @@ impl std::fmt::Display for EmulationError { /// /// # Returns /// -/// Returns a [`crate::Error::Malformed`] variant with the provided message and -/// automatically captured source location information. +/// Returns [`crate::Error::Parse`] carrying [`crate::ParseFailure::Other`] at +/// [`crate::ParseStage::Generic`], with the provided message and automatically captured +/// source location information. /// /// # Examples /// @@ -203,8 +204,9 @@ macro_rules! out_of_bounds_error { /// # Error Categories /// /// ## File Parsing Errors -/// - [`crate::Error::Malformed`] - Corrupted or invalid file structure -/// - [`crate::Error::OutOfBounds`] - Attempted to read beyond file boundaries +/// - [`crate::Error::Parse`] - Corrupted structure, truncation, or a read past the end of the +/// input; the [`crate::ParseFailure`] it carries says which, and its [`crate::ParseStage`] +/// says where /// - [`crate::Error::NotSupported`] - Unsupported file format or feature /// /// ## I/O and External Errors @@ -229,7 +231,8 @@ macro_rules! out_of_bounds_error { /// This error enum is [`std::marker::Send`] and [`std::marker::Sync`] as all variants contain thread-safe types. /// This includes owned strings, primitive values, and errors from external crates that are themselves /// thread-safe. Errors can be safely passed between threads and shared across thread boundaries. -#[derive(Error, Debug)] +#[derive(Error, Debug, Clone)] +#[non_exhaustive] pub enum Error { // File parsing Errors /// This file type is not supported. @@ -243,8 +246,13 @@ pub enum Error { /// /// Wraps standard I/O errors that can occur during file operations /// such as reading from disk, permission issues, or filesystem errors. + /// + /// Held behind an `Arc` because [`io::Error`] is not [`Clone`], and this enum is. Without + /// it `Clone` cannot be derived, and a hand-written one has to decide what to do with + /// this variant — the answer being to flatten it into a string, which loses the + /// [`io::ErrorKind`] a caller matches on. #[error("{0}")] - Io(#[from] io::Error), + Io(Arc), /// Other errors that don't fit specific categories. /// @@ -259,8 +267,10 @@ pub enum Error { /// /// The goblin crate is used for low-level PE format parsing. /// This error wraps any failures from that parsing layer. + /// + /// `Arc`-wrapped for the same reason as [`Io`](Self::Io). #[error("{0}")] - Goblin(#[from] goblin::error::Error), + Goblin(Arc), /// Failed to find type in `TypeSystem`. /// @@ -285,8 +295,7 @@ pub enum Error { /// Wraps a [`ParseFailure`] so consumers can categorize parse failures /// (truncated headers, bad magic, unsupported schemas, heap corruption, /// invalid fields) without parsing string messages. Returned by every - /// parse-pipeline error site in [`crate::file`], [`crate::metadata::root`], - /// and [`crate::metadata::streams`]. + /// parse-pipeline error site in the file, metadata-root and stream parsers. /// /// Match on `Error::Parse(_)` to recover the structured failure, or on a /// specific variant of [`ParseFailure`] to react to a particular failure @@ -621,7 +630,7 @@ pub enum Error { /// Failure modes for method-by-token lookups. /// /// Returned by [`crate::CilObject::method`] and -/// [`crate::CilObject::method_spec`]. Propagates into [`Error`] via the +/// [`crate::CilObject::method_spec`]. Propagates into [`enum@Error`] via the /// [`Error::LookupMethod`] variant — call sites that already use /// `Result<_, Error>` can propagate with `?` without manual conversion. /// @@ -640,7 +649,7 @@ pub enum MethodLookupError { /// inspect [`crate::metadata::method::Method::rva_kind`] to see why no IL /// is present. /// - /// [`MethodDef`]: crate::metadata::tables::MethodDef + /// [`MethodDef`]: crate::metadata::tables::MethodDefRaw #[error("MethodDef token {0} not found")] NotFound(Token), @@ -823,13 +832,11 @@ impl std::fmt::Display for StreamKind { /// Structured parse-pipeline failure. /// -/// Reported through [`Error::Parse`] for every error site in -/// [`crate::file`], [`crate::metadata::root`], and -/// [`crate::metadata::streams`], plus per-table parse paths that read raw -/// PE/metadata bytes. Replaces the stringly-typed [`Error::Malformed`] / -/// [`Error::OutOfBounds`] / [`Error::HeapBoundsError`] variants for parse -/// sites — those remain valid for non-parse code (validation, lookups, -/// emulation), but new parse code must use [`ParseFailure`]. +/// Reported through [`Error::Parse`] for every error site in the file, metadata-root and +/// stream parsers, plus per-table parse paths that read raw +/// PE/metadata bytes. This replaced the stringly-typed `Malformed` / `OutOfBounds` / +/// `HeapBoundsError` variants, which no longer exist; every parse site reports through +/// [`ParseFailure`]. /// /// # Stability /// @@ -933,47 +940,22 @@ pub enum ParseFailure { }, } -impl Clone for Error { - fn clone(&self) -> Self { - match self { - // Handle non-cloneable variants by converting to string representation - Error::Io(io_err) => Error::Other(io_err.to_string()), - Error::Goblin(goblin_err) => Error::Other(goblin_err.to_string()), - // For validation errors that have Box sources, clone them recursively - Error::ValidationStage1Failed { source, message } => Error::ValidationStage1Failed { - source: source.clone(), - message: message.clone(), - }, - Error::ValidationRawFailed { validator, message } => Error::ValidationRawFailed { - validator: validator.clone(), - message: message.clone(), - }, - Error::ValidationOwnedFailed { validator, message } => Error::ValidationOwnedFailed { - validator: validator.clone(), - message: message.clone(), - }, - // Emulation errors are cloneable (boxed) - Error::Emulation(e) => Error::Emulation(e.clone()), - // Deobfuscation errors are cloneable - Error::Deobfuscation(s) => Error::Deobfuscation(s.clone()), - // X86 errors are cloneable - Error::X86Error(s) => Error::X86Error(s.clone()), - // Tracing errors are cloneable - Error::TracingError(s) => Error::TracingError(s.clone()), - // Method-lookup errors are pure data and Clone-derived. - Error::LookupMethod(e) => Error::LookupMethod(e.clone()), - // Parse failures are pure data and Clone-derived. - Error::Parse(e) => Error::Parse(e.clone()), - // For all other variants, convert to their string representation and use Other - other => Error::Other(other.to_string()), - } +impl From for Error { + fn from(err: io::Error) -> Self { + Error::Io(Arc::new(err)) + } +} + +impl From for Error { + fn from(err: goblin::error::Error) -> Self { + Error::Goblin(Arc::new(err)) } } impl From for Error { fn from(err: cowfile::Error) -> Self { match err { - cowfile::Error::Io(io_err) => Error::Io(io_err), + cowfile::Error::Io(io_err) => Error::Io(Arc::new(io_err)), cowfile::Error::OutOfBounds { .. } => Error::Parse(ParseFailure::OutOfBounds { stage: ParseStage::Generic, }), @@ -1000,3 +982,61 @@ impl From for analyssa::Error { analyssa::Error::new(err.to_string()) } } + +#[cfg(test)] +mod tests { + use super::*; + + /// `Clone` must preserve the variant. + /// + /// A hand-written `Clone` with a wildcard arm flattens most variants into + /// `Error::Other(String)`, so `matches!(e, Error::NotSupported)` is true before the clone + /// and false after — a contract violation no compiler catches. Deriving `Clone` is what + /// makes that impossible; this pins the property rather than the derive. + #[test] + fn clone_preserves_the_variant() { + let cases = [ + Error::NotSupported, + Error::TypeNotFound(Token::new(0x0200_0001)), + Error::RecursionLimit(32), + Error::Other("plain".to_string()), + ]; + + for error in cases { + let cloned = error.clone(); + assert_eq!( + std::mem::discriminant(&error), + std::mem::discriminant(&cloned), + "clone changed the variant of {error:?}" + ); + assert_eq!(error.to_string(), cloned.to_string()); + } + } + + /// The nested error list of a stage-2 failure must survive a clone; a wildcard arm keeps + /// only the one-line summary and discards every nested `Error`. + #[test] + fn clone_preserves_nested_validation_errors() { + let nested = Error::ValidationStage2Failed { + errors: vec![Error::NotSupported, Error::RecursionLimit(32)], + error_count: 2, + summary: "two failures".to_string(), + }; + + let Error::ValidationStage2Failed { errors, .. } = nested.clone() else { + panic!("clone changed the variant"); + }; + assert_eq!(errors.len(), 2); + } + + /// An `io::Error`'s kind must survive a clone; stringifying it loses what callers match on. + #[test] + fn clone_preserves_the_io_error_kind() { + let error = Error::from(io::Error::new(io::ErrorKind::PermissionDenied, "denied")); + + let Error::Io(cloned) = error.clone() else { + panic!("clone changed the variant"); + }; + assert_eq!(cloned.kind(), io::ErrorKind::PermissionDenied); + } +} diff --git a/dotscope/src/metadata/typesystem/registry.rs b/dotscope/src/metadata/typesystem/registry.rs index 79ea8745..744a2fc2 100644 --- a/dotscope/src/metadata/typesystem/registry.rs +++ b/dotscope/src/metadata/typesystem/registry.rs @@ -65,6 +65,7 @@ //! //! ```rust,no_run //! use dotscope::metadata::typesystem::{TypeRegistry, CilType, TypeSource}; +//! use dotscope::metadata::method::MethodRefList; //! use dotscope::metadata::tables::TypeAttributes; //! use dotscope::metadata::identity::AssemblyIdentity; //! use dotscope::metadata::token::Token; @@ -83,7 +84,7 @@ //! None, // No base type yet //! TypeAttributes::new(0x00100001), // Public class //! Arc::new(boxcar::Vec::new()), // Empty fields -//! Arc::new(boxcar::Vec::new()), // Empty methods +//! MethodRefList::new(), // Empty methods, allocated on first push //! None, // Flavor will be computed //! ); //! @@ -106,9 +107,12 @@ //! - Generic type instantiations //! - Cross-assembly type resolution -use std::sync::{ - atomic::{AtomicU32, Ordering}, - Arc, +use std::{ + collections::BTreeSet, + sync::{ + atomic::{AtomicU32, Ordering}, + Arc, + }, }; use crossbeam_skiplist::SkipMap; @@ -127,6 +131,7 @@ use crate::{ CilTypeReference, PointerSize, TypeSignatureHash, }, }, + utils::LazyList, Error::TypeNotFound, Result, }; @@ -377,6 +382,12 @@ struct SourceRegistry { assembly_refs: DashMap, /// File references indexed by their metadata tokens files: DashMap, + /// Memoised `TypeSource` per defining-assembly token. + /// + /// Deriving an `AssemblyIdentity` from an `Assembly` row rebuilds its name, culture and + /// public-key blob. Every locally-defined type resolves to the same one, so it is + /// derived once per assembly rather than once per type. + assembly_sources: DashMap, } impl SourceRegistry { @@ -393,6 +404,7 @@ impl SourceRegistry { module_refs: DashMap::new(), assembly_refs: DashMap::new(), files: DashMap::new(), + assembly_sources: DashMap::new(), } } @@ -429,7 +441,17 @@ impl SourceRegistry { TypeSource::AssemblyRef(assembly_ref.token) } CilTypeReference::Assembly(assembly) => { - TypeSource::Assembly(AssemblyIdentity::from_assembly(assembly)) + // Reached once per type that names the defining assembly as its source. + // `from_assembly` is worse than a clone — it re-clones the name and culture + // and rebuilds the public-key blob — and the result is identical for every + // one of them, so it is derived once and reused. + if let Some(cached) = self.assembly_sources.get(&assembly.token) { + return cached.value().clone(); + } + + let source = TypeSource::Assembly(AssemblyIdentity::from_assembly(assembly)); + self.assembly_sources.insert(assembly.token, source.clone()); + source } CilTypeReference::File(file) => { self.files.insert(file.token, file.clone()); @@ -559,16 +581,41 @@ pub struct TypeRegistry { /// Identity of the assembly this registry represents current_assembly: AssemblyIdentity, /// Secondary index: types grouped by their origin source - types_by_source: DashMap>, + /// + /// The four indices below hold `BTreeSet`s rather than `Vec`s because the TypeRef + /// redirect sweep removes a token from each of them per resolved TypeRef, and a linear + /// `retain` over lists that keep growing makes that sweep quadratic in TypeRef count. + /// Ordered rather than hashed so that iteration — which decides *which* type a + /// duplicated name resolves to — stays deterministic across runs. + types_by_source: DashMap>, /// Secondary index: types indexed by full name (namespace.name) - types_by_fullname: DashMap>, + types_by_fullname: DashMap, BTreeSet>, /// Secondary index: types indexed by simple name (may have duplicates) - types_by_name: DashMap>, + types_by_name: DashMap>, /// Secondary index: types grouped by namespace - types_by_namespace: DashMap>, + types_by_namespace: DashMap>, + /// Secondary index: nested types keyed by the last component of their fullname. + /// + /// A TypeRef may name a nested type by its inner name alone (`Enumerator`2`) while the + /// TypeDef carries the full path (`NS.Partitioner/Enumerator`2`). Resolving that without + /// an index means an `ends_with` scan of every registered fullname on *every* exact-name + /// miss, and the custom-attribute parser drives two such misses per fixed argument. + types_by_nested_suffix: DashMap, BTreeSet>, /// Registered external TypeRegistries for cross-assembly type resolution /// Maps AssemblyIdentity to external TypeRegistry for cross-assembly lookups external_registries: DashMap>, + /// Secondary index: MethodDef token to the token of its declaring type. + /// + /// Without this, `TypeResolver::declaring_type` answers the MethodDef case by scanning + /// every type and, inside that, every method — upgrading a `Weak` per candidate. That + /// lookup sits on the emulator's hottest paths (`call`/`callvirt`/`newobj`), so an O(1) + /// answer here is what keeps dispatch from degrading to O(total methods in assembly). + method_to_type: DashMap, + /// Secondary index: FieldDef token to the token of its declaring type. + /// + /// Same rationale as [`method_to_type`](Self::method_to_type), for the `ldsfld`/`stsfld` + /// paths. + field_to_type: DashMap, } impl TypeRegistry { @@ -625,7 +672,10 @@ impl TypeRegistry { types_by_fullname: DashMap::new(), types_by_name: DashMap::new(), types_by_namespace: DashMap::new(), + types_by_nested_suffix: DashMap::new(), external_registries: DashMap::new(), + method_to_type: DashMap::new(), + field_to_type: DashMap::new(), }; registry.initialize_primitives()?; @@ -694,7 +744,7 @@ impl TypeRegistry { None, TypeAttributes::ZERO, Arc::new(boxcar::Vec::new()), - Arc::new(boxcar::Vec::new()), + LazyList::new(), Some(flavor), )); @@ -780,24 +830,41 @@ impl TypeRegistry { self.types_by_source .entry(source) .or_default() - .push(type_rc.token); + .insert(type_rc.token); if !type_rc.namespace.is_empty() { self.types_by_namespace .entry(type_rc.namespace.clone()) .or_default() - .push(type_rc.token); + .insert(type_rc.token); } self.types_by_name .entry(type_rc.name.clone()) .or_default() - .push(type_rc.token); + .insert(type_rc.token); + let fullname = type_rc.fullname(); + self.index_nested_suffix(&fullname, type_rc.token); self.types_by_fullname - .entry(type_rc.fullname()) + .entry(fullname) .or_default() - .push(type_rc.token); + .insert(type_rc.token); + } + + /// Indexes a nested type under the last component of its fullname. + /// + /// Non-nested names are skipped: they are already answered exactly by + /// `types_by_fullname`, and indexing them would make the suffix map a second copy of it. + fn index_nested_suffix(&self, fullname: &str, token: Token) { + if let Some(last) = fullname.rsplit('/').next() { + if last.len() != fullname.len() { + self.types_by_nested_suffix + .entry(Arc::from(last)) + .or_default() + .insert(token); + } + } } /// Insert a `CilType` into the registry @@ -828,7 +895,7 @@ impl TypeRegistry { None, TypeAttributes::ZERO, Arc::new(boxcar::Vec::new()), - Arc::new(boxcar::Vec::new()), + LazyList::new(), None, )); @@ -854,7 +921,7 @@ impl TypeRegistry { None, TypeAttributes::ZERO, Arc::new(boxcar::Vec::new()), - Arc::new(boxcar::Vec::new()), + LazyList::new(), Some(flavor), )); @@ -1014,7 +1081,7 @@ impl TypeRegistry { } } - if let Some(tokens) = self.types_by_fullname.get(&fullname) { + if let Some(tokens) = self.types_by_fullname.get(fullname.as_str()) { if let Some(&token) = tokens.first() { return self.types.get(&token).map(|res| res.value().clone()); } @@ -1157,37 +1224,33 @@ impl TypeRegistry { } } } else { - // Fallback: try suffix matching for nested types - // This handles cases where TypeRef has incomplete name (e.g., "DynamicPartitionEnumerator_Abstract`2") - // but TypeDef has complete name (e.g., "Partitioner/DynamicPartitionEnumerator_Abstract`2") - let mut candidates = Vec::new(); - for key_entry in &self.types_by_fullname { - let key = key_entry.key(); - let tokens = key_entry.value(); - - // Check if this key ends with our target fullname (handling nested types) - if key.ends_with(fullname) && key != fullname { - // Additional check: ensure it's a proper nested type match (contains '/') - if key.contains('/') { - // Check tokens for TypeDef or TypeSpec - for token in tokens { - if let Some(entry) = self.types.get(token) { - let type_rc = entry.value().clone(); - if type_rc.token.is_table(TableId::TypeDef) - || type_rc.token.is_table(TableId::TypeSpec) - { - candidates.push(type_rc); - break; // Take first TypeDef/TypeSpec found - } - } - } + // Fallback: suffix matching for nested types. A TypeRef may carry the inner name + // alone (`DynamicPartitionEnumerator_Abstract`2`) where the TypeDef carries the + // whole path (`Partitioner/DynamicPartitionEnumerator_Abstract`2`). + // + // `types_by_nested_suffix` narrows this to the types whose fullname ends in the + // same *component*; the `ends_with` below then confirms the full requested + // suffix, so a multi-component request still matches exactly as before. Only + // matches that cut a component in half — `Bar` against `A/FooBar` — are no + // longer accepted, and those were never nested-type resolutions. + let requested_suffix = fullname.rsplit('/').next().unwrap_or(fullname); + if let Some(tokens) = self.types_by_nested_suffix.get(requested_suffix) { + for token in tokens.value() { + let Some(entry) = self.types.get(token) else { + continue; + }; + let type_rc = entry.value().clone(); + if !type_rc.token.is_table(TableId::TypeDef) + && !type_rc.token.is_table(TableId::TypeSpec) + { + continue; } - } - } - // Return first candidate (could be enhanced with disambiguation logic) - if let Some(candidate) = candidates.first() { - return Some(candidate.clone()); + let candidate = type_rc.fullname(); + if candidate.ends_with(fullname) && &*candidate != fullname { + return Some(type_rc); + } + } } } @@ -1467,7 +1530,7 @@ impl TypeRegistry { None, flags, Arc::new(boxcar::Vec::new()), - Arc::new(boxcar::Vec::new()), + LazyList::new(), Some(spec.flavor.clone()), )); @@ -1555,7 +1618,7 @@ impl TypeRegistry { instantiation: SignatureMethodSpec { generic_args: vec![], }, - custom_attributes: Arc::new(boxcar::Vec::new()), + custom_attributes: LazyList::new(), generic_args: { let type_ref_list = Arc::new(boxcar::Vec::with_capacity(1)); type_ref_list.push(arg_type.clone().into()); @@ -1585,6 +1648,9 @@ impl TypeRegistry { } /// Get all types in the registry + /// + /// Prefer [`iter`](Self::iter) where a borrow suffices: this clones an `Arc` per type, so + /// each call is a heap allocation plus two atomic RMWs per type in the assembly. pub fn all_types(&self) -> Vec { self.types .iter() @@ -1592,6 +1658,59 @@ impl TypeRegistry { .collect() } + /// Returns the token of the type declaring `method_token`, or `None` if no type claims it. + /// + /// The first lookup for a given token scans the registry; the answer is then memoised, so + /// repeated dispatch to the same method — the emulator's actual access pattern, since a hot + /// loop calls the same handful of methods — is O(1) thereafter. + /// + /// Memoisation is on demand rather than built once at load because a type's method list is + /// populated *after* the type itself is registered; an eagerly built index could be + /// permanently cached while incomplete. + #[must_use] + pub fn declaring_type_token_of_method(&self, method_token: Token) -> Option { + if let Some(cached) = self.method_to_type.get(&method_token) { + return Some(*cached); + } + + for entry in self.types.iter() { + let type_token = *entry.key(); + for (_, method_ref) in entry.value().methods.iter() { + if let Some(method) = method_ref.upgrade() { + if method.token == method_token { + self.method_to_type.insert(method_token, type_token); + return Some(type_token); + } + } + } + } + + None + } + + /// Returns the token of the type declaring `field_token`, or `None` if no type claims it. + /// + /// Memoised on the same terms as + /// [`declaring_type_token_of_method`](Self::declaring_type_token_of_method). + #[must_use] + pub fn declaring_type_token_of_field(&self, field_token: Token) -> Option { + if let Some(cached) = self.field_to_type.get(&field_token) { + return Some(*cached); + } + + for entry in self.types.iter() { + let type_token = *entry.key(); + for (_, field) in entry.value().fields.iter() { + if field.token == field_token { + self.field_to_type.insert(field_token, type_token); + return Some(type_token); + } + } + } + + None + } + /// Get types from a specific source /// /// ## Arguments @@ -1755,28 +1874,32 @@ impl TypeRegistry { if let Some(external) = original_typeref.external() { let source = self.register_source(external); if let Some(mut list) = self.types_by_source.get_mut(&source) { - list.retain(|&token| token != typeref_token); + list.remove(&typeref_token); } } else { let current_source = self.current_assembly_source(); if let Some(mut list) = self.types_by_source.get_mut(¤t_source) { - list.retain(|&token| token != typeref_token); + list.remove(&typeref_token); } } if !original_typeref.namespace.is_empty() { if let Some(mut list) = self.types_by_namespace.get_mut(&original_typeref.namespace) { - list.retain(|&token| token != typeref_token); + list.remove(&typeref_token); } } if let Some(mut list) = self.types_by_name.get_mut(&original_typeref.name) { - list.retain(|&token| token != typeref_token); + list.remove(&typeref_token); } let old_fullname = original_typeref.fullname(); - if let Some(mut list) = self.types_by_fullname.get_mut(&old_fullname) { - list.retain(|&token| token != typeref_token); + let old_suffix = old_fullname.rsplit('/').next().unwrap_or(&old_fullname); + if let Some(mut list) = self.types_by_nested_suffix.get_mut(old_suffix) { + list.remove(&typeref_token); + } + if let Some(mut list) = self.types_by_fullname.get_mut(&*old_fullname) { + list.remove(&typeref_token); } // Add TypeRef token to the TypeDef's indexes (new metadata) @@ -1785,25 +1908,27 @@ impl TypeRegistry { self.types_by_source .entry(source) .or_default() - .push(typeref_token); + .insert(typeref_token); } if !resolved_typedef.namespace.is_empty() { self.types_by_namespace .entry(resolved_typedef.namespace.clone()) .or_default() - .push(typeref_token); + .insert(typeref_token); } self.types_by_name .entry(resolved_typedef.name.clone()) .or_default() - .push(typeref_token); + .insert(typeref_token); + let new_fullname = resolved_typedef.fullname(); + self.index_nested_suffix(&new_fullname, typeref_token); self.types_by_fullname - .entry(resolved_typedef.fullname()) + .entry(new_fullname) .or_default() - .push(typeref_token); + .insert(typeref_token); self.types.insert(typeref_token, resolved_typedef.clone()); true @@ -1823,15 +1948,17 @@ impl TypeRegistry { /// - Before InheritanceResolver runs (which needs to look up nested types) pub fn build_fullnames(&self) { self.types_by_fullname.clear(); + self.types_by_nested_suffix.clear(); for entry in &self.types { let type_rc = entry.value(); let current_fullname = type_rc.fullname(); + self.index_nested_suffix(¤t_fullname, type_rc.token); self.types_by_fullname .entry(current_fullname) .or_default() - .push(type_rc.token); + .insert(type_rc.token); } } } @@ -1854,6 +1981,79 @@ mod tests { AssemblyFlags, AssemblyRef, AssemblyRefHash, File, FileAttributes, Module, ModuleRef, }; + /// Builds a type whose *name* already contains the nested path, which is the shape + /// `compute_fullname` produces for a type with an enclosing type. + fn nested_type(token: Token, namespace: &str, name: &str) -> CilTypeRc { + Arc::new(CilType::new( + token, + namespace.to_string(), + name.to_string(), + None, + None, + TypeAttributes::ZERO, + Arc::new(boxcar::Vec::new()), + LazyList::new(), + None, + )) + } + + /// A TypeRef may name a nested type by its inner name alone while the TypeDef carries + /// the whole path. Resolving that is what the suffix index replaced a full scan of every + /// registered fullname with; the resolution itself must be unchanged. + #[test] + fn nested_types_resolve_by_their_inner_name() { + let identity = AssemblyIdentity::parse("TestAssembly, Version=1.0.0.0").unwrap(); + let registry = TypeRegistry::new(identity).unwrap(); + + let token = Token::new(0x0200_1234); + registry.insert(&nested_type( + token, + "NS", + "Partitioner/DynamicPartitionEnumerator`2", + )); + + // The inner name alone resolves to the nested type... + let found = registry + .get_by_fullname("DynamicPartitionEnumerator`2", false) + .expect("nested type must resolve by its inner name"); + assert_eq!(found.token, token); + + // ...as does a multi-component suffix. + let found = registry + .get_by_fullname("Partitioner/DynamicPartitionEnumerator`2", false) + .expect("nested type must resolve by a multi-component suffix"); + assert_eq!(found.token, token); + + // The exact fullname still goes through the exact index, not the fallback. + assert!(registry + .get_by_fullname("NS.Partitioner/DynamicPartitionEnumerator`2", false) + .is_some()); + + // An unrelated name must not resolve. + assert!(registry.get_by_fullname("SomethingElse", false).is_none()); + } + + /// The fullname index is set-valued so the TypeRef redirect sweep can remove in `O(log n)` + /// instead of a linear `retain` over lists that keep growing. Registering the + /// same token twice must therefore not duplicate it. + #[test] + fn fullname_index_holds_each_token_once() { + let identity = AssemblyIdentity::parse("TestAssembly, Version=1.0.0.0").unwrap(); + let registry = TypeRegistry::new(identity).unwrap(); + + let token = Token::new(0x0200_4321); + let type_rc = nested_type(token, "NS", "Outer/Inner"); + registry.insert(&type_rc); + registry.build_fullnames(); + registry.build_fullnames(); + + let tokens = registry + .types_by_fullname + .get("NS.Outer/Inner") + .expect("fullname must be indexed"); + assert_eq!(tokens.value().len(), 1); + } + #[test] fn test_registry_primitives() { let test_identity = AssemblyIdentity::parse("TestAssembly, Version=1.0.0.0").unwrap(); @@ -2046,7 +2246,7 @@ mod tests { None, TypeAttributes::ZERO, Arc::new(boxcar::Vec::new()), - Arc::new(boxcar::Vec::new()), + LazyList::new(), Some(CilFlavor::Class), )); @@ -2077,7 +2277,7 @@ mod tests { generation: 0, encbaseid: None, imports: Vec::new(), - custom_attributes: Arc::new(boxcar::Vec::new()), + custom_attributes: LazyList::new(), }); let module_ref = Arc::new(ModuleRef { @@ -2085,7 +2285,7 @@ mod tests { name: "ReferenceModule".to_string(), rid: 0, offset: 0, - custom_attributes: Arc::new(boxcar::Vec::new()), + custom_attributes: LazyList::new(), }); let assembly_ref = Arc::new(AssemblyRef { @@ -2105,7 +2305,7 @@ mod tests { os_major_version: AtomicU32::new(0), os_minor_version: AtomicU32::new(0), processor: AtomicU32::new(0), - custom_attributes: Arc::new(boxcar::Vec::new()), + custom_attributes: LazyList::new(), }); let file = Arc::new(File { @@ -2115,7 +2315,7 @@ mod tests { rid: 0, offset: 0, hash_value: AssemblyRefHash::new(&[0xCC, 0xCC]).unwrap(), - custom_attributes: Arc::new(boxcar::Vec::new()), + custom_attributes: LazyList::new(), }); let module_source = registry.register_source(&CilTypeReference::Module(module.clone())); diff --git a/dotscope/tests/fuzzer.rs b/dotscope/tests/fuzzer.rs index 7616f497..c1cbffbc 100644 --- a/dotscope/tests/fuzzer.rs +++ b/dotscope/tests/fuzzer.rs @@ -1,38 +1,96 @@ -//! Fuzzer corpus regression tests — load every file under `fuzz/corpus/` and -//! `fuzz/artifacts/` through `CilObject::from_path` and assert we don't panic. -//! Files are intentionally malformed; errors are expected, crashes are not. +#![allow( + clippy::unwrap_used, + clippy::expect_used, + clippy::panic, + clippy::arithmetic_side_effects, + clippy::indexing_slicing, + missing_docs +)] -use std::{fs, path::PathBuf}; +//! Regression tests over adversarial inputs. +//! +//! Every file loaded here is malformed on purpose. A parse error is the expected outcome and +//! is not a failure; the property under test is that `CilObject::from_path` returns rather +//! than panicking, aborting, hanging, or exhausting memory. +//! +//! # Two corpora, two guarantees +//! +//! - [`fuzzer_crashes`] runs over `tests/samples/fuzz-regressions/`, which is **committed**. +//! Each file there once crashed the parser. This test is mandatory: if the directory is +//! missing or empty, that is itself a failure, because a regression suite that silently +//! finds nothing to check is worse than no suite at all. +//! - [`fuzzer_corpus`] runs over the local fuzzing corpus under `fuzz/corpus/`, which is too +//! large to commit and is therefore absent on a clean checkout. It skips loudly when +//! absent, and is exercised by anyone who has run the fuzzer locally. + +use std::{ + fs, + path::{Path, PathBuf}, +}; use dotscope::metadata::cilobject::CilObject; +/// Loads every input in the committed crash corpus. +/// +/// Fails if the directory is missing or empty — see the module docs for why. #[test] -/// Open all files from the fuzzer corpus, and load all of them without crashing. Can produce errors, as these are invalid files, -/// just don't crash -fn fuzzer_corpus() { - test_load_path(PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("fuzz/corpus/cilobject/")); +fn fuzzer_crashes() { + let path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("tests/samples/fuzz-regressions"); + let loaded = load_every_file(&path).unwrap_or_else(|e| { + panic!( + "crash-regression corpus at {} is unusable: {e}.\n\ + These inputs are committed to the repository; if they are missing, the checkout \ + is incomplete or the corpus was deleted.", + path.display() + ) + }); + + assert!( + loaded > 0, + "crash-regression corpus at {} contains no files — this test would otherwise pass \ + without checking anything", + path.display() + ); } +/// Loads every input in the local fuzzing corpus, when one is present. +/// +/// The corpus is hundreds of megabytes and is not committed, so this skips on a clean +/// checkout. It prints when it skips so a vacuous pass is visible in the test output rather +/// than indistinguishable from a real one. #[test] -/// Open all files from the fuzzer corpus that previously caused a crash, and load all of them without crashing. Can produce errors, -/// as these are invalid files, just don't crash. -fn fuzzer_crashes() { - test_load_path(PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("fuzz/artifacts/cilobject/")); +fn fuzzer_corpus() { + let path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("fuzz/corpus/cilobject"); + match load_every_file(&path) { + Ok(loaded) => println!( + "fuzzer_corpus: loaded {loaded} inputs from {}", + path.display() + ), + Err(e) => println!( + "fuzzer_corpus: SKIPPED — no local corpus at {} ({e}). \ + Run `make fuzz` to generate one.", + path.display() + ), + } } -// #[test] -// /// Debug one specific test case -// fn debug() { -// test_load_path(PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("fuzz/artifacts/cilobject/leak-b96355f49d7918e856039d2c998de850e47ffdf3")); -// } - -fn test_load_path(path: PathBuf) { - if let Ok(artifacts_path) = fs::read_dir(path) { - for entry in artifacts_path.flatten() { - let path = entry.path(); - if path.is_file() { - let _ = CilObject::from_path(&path); - } +/// Loads every regular file in `dir` through the parser, returning how many were loaded. +/// +/// Parse errors are ignored by design; the assertion is that the call returns at all. +/// +/// # Errors +/// +/// Returns the underlying I/O error if `dir` cannot be read. +fn load_every_file(dir: &Path) -> std::io::Result { + let mut loaded = 0usize; + for entry in fs::read_dir(dir)? { + let path = entry?.path(); + if path.is_file() { + // Malformed input: an `Err` is the expected result and is discarded. What this + // exercises is that the call returns instead of taking the process down. + let _ = CilObject::from_path(&path); + loaded += 1; } } + Ok(loaded) } diff --git a/dotscope/tests/samples/fuzz-regressions/crash-00556c4399794f6db44ffce728effc1ec3cd2fa1 b/dotscope/tests/samples/fuzz-regressions/crash-00556c4399794f6db44ffce728effc1ec3cd2fa1 new file mode 100644 index 0000000000000000000000000000000000000000..943d17d94792b0db3597c27d6aae32bd151e7464 GIT binary patch literal 47370 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 RAEBCQvU)&dfS~p}SgzPokA46E literal 0 HcmV?d00001 diff --git a/dotscope/tests/samples/fuzz-regressions/crash-05e5dbbed85fdda41372c73d6e7eb80ce9a91546 b/dotscope/tests/samples/fuzz-regressions/crash-05e5dbbed85fdda41372c73d6e7eb80ce9a91546 new file mode 100644 index 0000000000000000000000000000000000000000..f0afd6548f97f19f9cf85346d35db3418f997bbb GIT binary patch literal 475 zcmah_yKcfj5S)WV2+_E?CQ=koa4J6prBj540wE;oSZv8}q~K3nQ>S;~uduM_@(CbO zY<7KC1PX#F_BFGQyTzxq23Qyi{Gbm(SItuz5Ya1TX8BNnc|$a0Q{tHg#KLVcQ(;0P ztbpYdIP4z*3bQg+1e73-do5K#A_teDrJ1O|3D~VTWRAqXS@=^G(!oTT``T6amalB8t~I5Ao_Lk{9ytbwWK!qpIH9izMNZ8JR8Q!&@5{ zfx?&bxq51zHCv@i;|Q}64Owkxoe7&MA*PhZW7L#VSpsG}9orvc_cAjAnnnruI>WKh z))QBsRd8YT^^(U2MmRYhjiLIzUe7%ox)oJ}>lQVj#g^lW09^0~x;M5Xj1f1@AM5>} z1@{X0uF1gi`H*xCBR|!=tB9~aGHte$dWV&DAKz-KqSO$OHk&CGV5#bx#r4(21zj*E zE9>~*=rd8Lvm!PxarD3Rq^%zANu?6$Cx(op$SLk-gKT5XZ*K__OXDyaMQ5ApRBnKm z|G+!HQ0gWb1I!DI`k|P6nThb-%5Xn9Hn77>7WgZ(F>(7iM*qBhoRmFeKHzB`+f1K? m8-IHeXpZ^HeJ48AI;$Ru^Lxv4X;`jg^QPNRqv;(Y;qwblVznRu literal 0 HcmV?d00001 diff --git a/dotscope/tests/samples/fuzz-regressions/crash-116ecc73c01734816489057f0c6081c787bd5b1d b/dotscope/tests/samples/fuzz-regressions/crash-116ecc73c01734816489057f0c6081c787bd5b1d new file mode 100644 index 0000000000000000000000000000000000000000..4b5113e19716088d52d5725a9afe871d2f95a845 GIT binary patch literal 390 zcmeZ`5*1}+VDM!WWng&DpuhkGoFGCfS|=_pPC0H7V*txhhX4PYSvJ=KR51Wq5CGwEFoAeL z)!X7281BXb%>;_eBUu^^xAect|9ki>{290a-*AfH*EL zZqe-rzpa2lws2wf{~tid$-y0`0|}A9%;bzXptnFFVqgFcPmQfWRlqO$(l98@b0}?v6F>=8SV$5tKtJCp!$$NVqY1r@g(O^G zW2u+Nz*$Es3(YdGz~MJxyqKBl&Up79kQDI;CZW_$qcJ&`+z`f(8~y;ui(OyC!GrQWE#F7n-^4WYwc!CVy3(;HdgVEnz{lVRfTtee7p7rU# zrV3}G{t{W9XuXH>vhQ6LbzbW;K-#P?lY*nicBYpXrbkV|SZugcs!^+zam)QL5&4v+ zbk+N>ved?Y+li0qFY!5H(f2k&=H6@U?W*r`j+;E>12?rEA*+QUeuPN>(5ydKhWuYW w`tPn&_#Cn3=2prxo$|Bb(-Wnh0XMSFQVgi<_(pXpof~CP}1R>|}CaJCMExd$_A)QBvV6n~^ zk)Rg7V!m(Y&2F+%$^sHg0auK{aKsEUpNJ+@SZU`3V|GNYu{4H;L56#KEQA;l6H6eS z19jB}Xj`6gdJXS|zSS3`-)EC{}f8vI>U=;|KHGa)9HTLllGbX#=* literal 0 HcmV?d00001 diff --git a/dotscope/tests/samples/fuzz-regressions/crash-1cbe9ef6db3eb6a372c269cb4c8e751565164a0e b/dotscope/tests/samples/fuzz-regressions/crash-1cbe9ef6db3eb6a372c269cb4c8e751565164a0e new file mode 100644 index 0000000000000000000000000000000000000000..632553dc7cf59e415b2c535705bdd5ce64f1229a GIT binary patch literal 1839 zcmeHHKP-bm6#so6P0+>CfdoycD3up$Cy^KoO~j~isYo|!B^*d!K-*bO2b zG_f!=l^DcoLXe*Ku3z~Yt)zmH6~kaO%g~;TDW$sA zo-^Kf3S(B3>M>3p9fqNvS$5DpCW>*zir2vSDDZe60My`Ko`?o0rs5z9x`3H7hFKPk zVuYw2eS<4Pwmw!sfz=Jmx_m(-&8bmEgErnYu2c*P-lokVHY=f(r(usSPe~>sClb`` zhv=p(g$+kG!*u7`eELXhImnA?%6P1u!$oGLXXYlFM5};)$cN1zgSaK)EE)4Cw5%v@ zMlbJmsg_!9XMHD;wIv*EsPwk*q5Gv;+Ma)es(p({-g)x zRw*dYg)u-holE!{Hyb;mU?;Mzf*_?_GFOtA!F%OHv0y!l6F%7 literal 0 HcmV?d00001 diff --git a/dotscope/tests/samples/fuzz-regressions/crash-1f924b9d1057f0e1957622ed59233e673aa72dff b/dotscope/tests/samples/fuzz-regressions/crash-1f924b9d1057f0e1957622ed59233e673aa72dff new file mode 100644 index 0000000000000000000000000000000000000000..4cc6f175599263a4116775c7084b4721d1cbe951 GIT binary patch literal 567 zcmeZ`VgP~QyhJ93|1dDw9?JR+6RBrVWnd66WMH_*oXNys&7jC&#lTPl)(Ry4>oG8- zCugo}ovW%37GwNh|6i8rzv6!&4FY;V9GID$!8J+XHdIs8?b`va3=E;mm>DKuW7pwsHX&ZAZ^E<^K}HINUCPZ03+jbiYHFhQiMN)!?gA|4kPrwjmjVzB-I literal 0 HcmV?d00001 diff --git a/dotscope/tests/samples/fuzz-regressions/crash-22020b57bdfbba9c10cdfcde93865317b807b3b3 b/dotscope/tests/samples/fuzz-regressions/crash-22020b57bdfbba9c10cdfcde93865317b807b3b3 new file mode 100644 index 0000000000000000000000000000000000000000..782a46b36ceba3a4b88a800b7832d7ba0888bfb3 GIT binary patch literal 731296 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Ν*!tD(DqD}hHv^C&krc{r=4o2IuWbeQg8n$Pr;(M@mix=sAr)GjO`P@P%EG64+ryV@f0 zj8UPlW7P4|#-nsB&}hf1I&|AszQ(9$qwJ>mV}>SKVpDas=~=^9th>vn*0p24HKWU` zE)T-xMJ(1>``Tj5#}*?q_0eu}*G*~HD<=~&g(cbUduz3JBTbo~X_MY+|D{+vSN`q> zy+h!vDy^4|rWvS0^;D~jikfLjnvM2+^3nyvX92=2p6jiEFhwM4CoESW-RE&gdy${tLmVxoIn7Q~4}&M$ z%hOYlm?Vn*3`L_FlH5qHA|ko<&gJ8jj$SCRl7iTaY3pQh^d8tX9=+0%*ICJh>O*6p z`ll50tz^=Vq`FQ5ciq&%7}_0%9!oTv8%am4=Ja!^u7fF>^+S`1p7JAlv;fYu@v^UJYIb)x+VbhgPVRdHEkI^@bsF(*Fdk?eD}oA<0QSF#lp`;0~2qHq?)I9rKD1I ziys~e7!aFIoFW2;ts)f4F!!;pN-C_%oG-@wFxqO5n5B| zfMxw|ccjL|cpsrv`tD6jo^jJC@lLr#6AIN!^p+z;VK=cj_J5T|GX~*{-E75-;SpE2 zQl@$OKT^}KrwTzAYq-gZHm4s-bt%7>+$h*q5{ZspMun)gc0$a}O`OYX4gEW04Y9L- zG2@M*S3bg|fLS#3Wz6!=R4KFcw4Y~C$>~@0oujESg>?^8dijHUWIHD}le|r0>KXvnt3{b6N1|Fj&iBN5L9X2CH>(>`uCg7q9X!vb-%ZW>vp9lmDOAj}$;MwgOyjXo zO(VHq-cg?7d*i+&hZkX_#|YZTc`PeUtWm;GHUg_(05<1OQpm(miMwO@AykYmf~s4#=K3nQo!3Ie&Ja=I9}##bJi2QL3Ri{aUI^$>f=cj4I74 z2C8n&*|@uz{MY+H%prl{HYgp22gm_!t2UASx~0e%S(&|W^oLYR`ID})6j-O2l)Bw@ zJ6$e{6l?0>WDk*dGv8Kw4$&un_i!q`MgH8JZYd%y*1^E8o>v;bBgbe zmL}Nwtc9B3%|xmc7HeDSLSo+Uv z3A;gtKPY;X@3$-&e($xok9$4g%Ksu+zDS-@eaSkA6MpC}k|a2Z*avM~ysIrjJdLlk zE?hk@uqi`maho3;swXR3x`xzlm71nRM8_5u1ncCbSf$1)UkQ)5MEyyS<6w1CzR4I- zCUk1nRI4?lHq?Y{XUv&%YJ6)O3dOUDZhlbdx>*|E zTFBD`Yb5#`pZBXS8Ds^85BXqQ-^ubY0r_H zixVpp(I8vU8WIExA)Q293MH#CXTiLUWLsS+zpiV;)}1-SJDtGWJoBdDnd8@52&o|i zTx4@vxPfJELTc{}!c({h$^wnx(LBQrime_{q{Nm%{5cSdk)PfX2@#(JB4f6=S}^Vo zRu|R<#0MJU?ot#RY6}B7ei$HeCw|z~3MKf#&WUibqT6k;heEIIS|kCcQgVQRNxmGi zWVK7TrSu#tooF|h<>-7 z68odK`MH92oCptl44vDPn>z;upnsaEni%?A=|44ri;*HXZJepnm|o65dq%0U21X2Gb z@=DZ#l{wzZpjfncvokd zFDRh3%+*&BtAB#8?`wC?_x0CY;Ggu~?7md9MKcm~o-`|S@)8Ixumx$yvR2l9p}hEn zWxgTbjK>pgB^c>tseCoF&U4BP9&zhlRVzKemhaA%6^H1J#?Sg#-Ayx|O<1e50WK{t zMg>ZFB@~zsB<_(n2nk*p)+gqb(vo{yN#hkv=Y1*W(MUg>>XPrM&{M?{MV{*XfGP4M zws8ZWO+TCJ+KYk;JgIdHJc)gt+6rKf5UL;+!u-6Kr>kH2gq)%y@3Q`;raen7F9yas zOV~Niex&oG7GQu^)r5NCa`f!#7<1#4m}1gz+EdK>SqH^#fcM$18>L}chLi_ap8SJ90)AAn%jc{^wXRuWkC!JrYrH$UCt?NAZr z$lMx{(M(*-$h9H86$@(Oswp1}YPVR>shXx13wkk?pJtSQMnQ-(kIJ|1TL2?A3b{bc zHi9jAd;$$C6bCn9tG>sD-O}t1{OT>yA ze6=yYQx4c?^wc?nSZsTJ%zSRGJsE0@&ag+R%M=)4qW;UlnMco#JKyCty!$UocGRB9 z<8}p!Zh#re8oVF-y|^y3fC_-bcO*XK1S0zRH$0WcIKD)5WZ8Up=IWJz* zYozPeu)&MMC-hM?Z*Vh$PBmUrCX$eM-+99hqOxd<1o}wS%Qc|z%# z{K;Bg!Qrc?*m@QFXBeC>5ev63bxFiMz@GVQq@|(*&O~5YDjMHc!Eko?%kWALnJw&| zJ7cL$w07WyGDEDq3efy=3HvH{bYpxnf@`oG|GU;F@Ly+?5dNPe@V|&CyWu~EvVjia zb7S~dB=B$A2>!Ey7x4cZ^IUi5Y$^WltxMp4M2!De68PUq^w{vfnX&=z@VPPkM;Jcq zZ7gQMn7z?|DewaR2W=+)3H~F0sGl%{-f+p~25hZ;ztX;=QZZU*I@w(SCa{)#GFSdeT>? zTy%`rSnHrv>J6{b>98-zi%vh%G18xSp*NQUafd?nSmTq0h3XS&)&_zNp^xaOfJv%k zr0imsD6SCu^h)U8^EVge1^Q4jF+P?Z54v>zXKp~)UuJz+8=tIIZNI}|S~S^v{cnf* zhn3ZT_C3+$Q|s>&>c4O0i|t>tdG%kjfnkLHSXO^zdHwSJ1iklXR)BX_8N7bw@OrO* zLa6`QvicAIPZ>SR@hSgZKAt__C&t(De}>hynEyR~UNv1(<4^o{O9jDzJ)0VdIi6s@ zQvP%ByEhJhH{er<*+B!$f^WN`COzC1!k+Wd9TE3+Hm_9aU}Kwc8;op>=d17f8JE%= zJz^gjCi9U?rhlsV8PC3Rt)y-iDbYAC{rA%jzOf@end!G#yGvOnQj(y%E#(!&x3=cn zAzIj!_%W;F!3gWE(IQfvsSYydmGy7D#H`f}R~G zR%@6b{}t6|UYZVB6@Jd*rxAjX1SU+sn?#ACv`MrOALut$+cf1h%0lE$5IYzB4wuVq zXJXD~@rp$(?IF=di`2CB6xLl05>IE@yp9i&oTEX`?|s@^GS=*Vk~^(1C5Ku`bPC^3 zGj3n&4v|Eiw9TQkMvv1k3)R0cJDo22-}B66UF)_5&UKIHLPX1LlRxY8#c#H4DqMI{ zsD6YMLxdX}$=lEh*Ye8~e>oQ-hjZz=_YzaK%>m)t-V6v&x1EsgY1JBgssS2nDd49d zrqA74wdhCnJGKDiY^hhb(NhNGZ*L=}W8yX>xA2*3-ZgQKJ1|kr-u`;rK>2}*jz1gZ z|G`_&n_9x@auR!JmAlZY<5a1toJ|oaq?g{&tbl}%fQ7RFG(85|Qtx~`TpQWh(>9mu*fN$dcgk`zb@+6EgBWs&cbBy^nGdY*$BJQMe>hzc@ z#b;}T(AQ{%DZ<>|iFMe3^e@axTGfiPR1?752N+{$QpcZzVmrcF@kJ$WRq0f>&no=z zJYJ$7oqRfpj>qyZ7quW(`n82;j^3l4n-m{}WxE6Qr=4zM7l}HkXeN3ijI6HIikf7{ zFi7Eo?d`x(2N?IUPkmbld$B&kU!4$ES#q#)z&BnKZD{2VTW(IXSX$?H{2~&Vt*vtl zI{2J*YWHK7b_YE+ok7(yPb#~BQENG zPLK~EgT8Ub2yxkE;6~>$EWEb`VhVMn~&08}<=(FupXE`(*$R{q40A`U!dD z=-(uMhqU4 zAd;lVF)NI~%;4rY|qTwB^;W8}-I;r&v2pjF}-N(FhZEPLd=)BoIIOnxkin#rJ z%zyK8K&raqVAXR%s>wtblsN*y7J3YQ<2xPL>DM)Jg_BP!=uWB#nIR=#ph&Z_y~?&H z=nm5&pMJka*z_;A7&`{FGeyU$D**RJ=7{Ede80wBP+_*c+TUKW%|U8m2KivdaUJC1 z_y*BYI}6ne9>f-evlz(ZgRi;vm$W!tcb3vKPLjpe=Fwb5q4JAdi#+CWm) zBdZg4ZR~7N57!hIHd}Dj#w(1Uaj zuM`J5@kDc^#crR}7ujtYv1~Y$`@mO~xGu&-&foWnE%;lFy7TdI7E}RTcHok?565g= zKr0gGT$e)iO?0(PP+u;vQj!lakc>Tc258A^GwGe5SgDix>sSZXV}$lm_Ni};d}ALO ze-Yo!kV4kv7{Iw%%Qy0e_`7lZ zdf|r;X))%9z;rHD^=%_o(O!SV6-|ilE$i=Y2CqbMu3>4{#^X?Nn8ssgb*N{5??DKu zm%q19eY=@&h3Xsl`)ISjsi4P*c>Y3Z|HKHp&^aDEhK`i6S8x8zEnpba$IZ$b7|gOt zK7_H+YUD$L1y|wb@=P0N5$r-WO-tKA84FC+N0a0)Vq*Ub|K(M6;U)fJ3`mnX_?9__ zxltpVqrt2X$MEgSy&L5eW7nk0J{^N?W<6qtG_-rxAg$oWfjXR}O7{O-1Cv|>U^7~c z_%)dt&VjA66ac=|=u1;B8iuV&_Hd#4GZxiYYw%A1zKP=#=pj}@q53WxHaYGFG10$~ zBDs$<*H}zgW($z5*CBVLMI)Uuw2{vcvEL0O4A54?f0!*~B0n!{U^|%t zi->Isa(rYr*^Hb|^WP!71;3Wwhij%y0)_J5<@cd}8oz1mJij&R=0-;CTNvtQi<>w&L?K}m89{nQm4`F;-qB%Wn4JNf&FHfKJ3WSaO% zv$VkS32SZzNZa$@^1KA;%jI1%Mf|-iC#yKPj<8RCJDP9g#Tl651t_0Juj2f4_zVg7 zqzzDv&tB#DtWkikh|iNRJA59pPvLV9-wV`;^t+V^j4la#B$%(-N~`TQg`X@gV!xGVX>eFS{P93@mB*mSuf9 zUGoD+sm48B?5R+_z^3?8!FBEgRxOY%2lK|2B10DQgjt$g1##n3=A5blwpg%#zqAdz z?e;sxW}HXieP9!FU-9kK(2hN~`S*FAy72P<(WBfJnelhlQil!3I9HgVe>XwX?x6#9WU`chV)FCV+i!kGI(=>W z(M;%fwF(mTP3H!urpxi=W_$Ztckw=aMoo1EH6YW(!ME8cdpH-Rb&_-!3HRsrw?km5 zh>zZ8M&43HvL#mk#q|C9uE|_*^Gho*4VM&Wy*1jlm23IDKAxnn=sBjv9Src~BX9tCO4xWvCOpmD1W#N`sLvNqpP)+*=d7J?@ydxbbvF4{SL)ZortV7N^GTz3X; z%SdL{;T1015DIUE-(+JnU>`;qXxqUSpq)KkJI1(y+hBIbImSDy)Cqa=SJ;{mBqo!d zF8-9CMpCmSA>FMOAs^yeI*0NfO>qO5mA&h)a%huI2q} zo_8(RJ*dp35Pc@ayP|-RSWJI}`DBC3?g!r}L6+Ke;oWHmPyb z3PNAe-|e*i_b2EY^``%axiR%C5jPNJlU>aGKHpQfZr|>i zgz)0mQ&ke&< zi{H$;4euSo^5vUYA$rKI62)Q?y=#Ue@wcnYMQLYwZs9f=fn5PMKFf2H7=585)>)p~ z6-z@yyTl<|8DZo<{U&1eOi|2M3_1TT+6JQrdj~@mU;a{KyICbxYLay-nEUzL?565GQW{QOyx`xsnd;a>7Pa_;O3{&KesZZctMQr{q)ak zzyH6}KTqUJ`sp275WTZ2a^YLg>zx*OV|u40(R@B|FoAaDYNUAD zsZCMw+&Zx0S^mDY)CsypisuZ$`fZTDsj=4mrs9}BanHw;Js)JxPXBZYLqomg@g6_04jG!_rrJ$@Ks5G{G=eThlj3QNe!t<~iDAKz*}N9!-`&bndZUf$gtv z4v6*5QdsFFHqt5I#9HV#P)1>2A}lGdT~8zw&K(0QoVPHXyux|OV5e}N5bW$KFUEH{ z)ZcU~X{mCBb3YUVE1XDA_}eGxALsvK5Gc;SXXztSZs}mw(DLsEmZw+#j6W=?-sq27 zdpHyG!cB(t9Ieu^CSt2}&R;bgYhr-;a@l;a+}$pp-sRW@Mh+K-j~29$0=i zp!{2vmH)Gj6YDMihRMhK&#PPvsQXv}OXOp3Gr3}a^FJPSRr|BuRki1V*axrYMAbf( ze15~{|65C?B>zWM>tg>n&hlj+x80Th!9e)GEoQQR@D`D6Ti-E?F*%MAT8wf0zaaK2 z8UNSiO_FaH`}*1EG$^fL>TJE2ePGriggiiqwrV)1$Z{3}HDD$kyc?4KiRJ0{VHsJ@ zN0p>Mb%6AX^L6|^Dlcj$jAGex&Am!1Uam>3?-c1jc-Gaz=;fD4(3|~ST;KWUyRM4y z`p$t2^^V_@HEglsPX}fiP7=?%Yl4zc$4(y zLi?YF!06EEBEg0R@TnMidUI7c55G$(X8r}uu&|F>02j7gKg-R_5D_O%c@ znP`$8ZL_}fuIY`XS?(Jzetax_?_WDz_1^#T=x+O$PFpc)@ymLbQ=xNuAMWL?KBw_# z_ddbPiZg6I9zJMOwe3onubqjLv?cIpjSTZOYT(2$e=yI0+HZ$QZ>JMf^cpT!KlM~@_T~A{D9^vFeC_4orR6h2pgy7*uz&;5ziKA0)aw8h8i4-p_0g}R{@-?Sdi&LX zfb>sTU;1VI_@^0iiS{oGf2lm&#)G&|YY%2?2e#CSZ=Ua@G_|Btw zr)%+J?wi81^l%j#OJh4?Zk=Nu-(O%Dx3CKclV8Dg@S~YO5kfbiKN0gJ3q@G~f8F3` z)qQ%R?lYC0^-6V;@}0`L5HBh*_7m7fow@d8ii32wvve1)NW9zZ^;X0Wz3U$7h)JcV z$gWbzC!7t!nuC_`VG4UWYZI@|-^-iaOXY#t>8n*k&acC3v(xba+nW0ZHcfn3g^ zw}364c5ZCb8^S|y1}e?i7agra?G{jg`&H@sU87*kSSaHv(AfzK7lG z&T`f919z%k@KZW3+GFKTig5d^SW%pZLgRp2dr8?i=?-A#eM&RqVYSclR`xTosrq}# znzN4_UygeN;c?s0>o)g(^=V;g(}RB_Ywj`@g0A9dSq%if zi5P~Qgg>h7L(yJ(8Na_Gvsrw?MpKi-uC6G*qrGt1UODF(fyE1)amU^d%ktKHeU@q! zpQV;VZ70a~#VjY06`9VoOz{&ZGC#UxOIfLY(FaIE_Q6^{4@L3S10Ab>V;T6j-EOa= z5UgXeOD0zD=HJywH!*9;JUQCa+=K13ewQGWCmr0=+7Tos*4zHbBilnp8uVehAV%V zOd~4)JK9sUp7Ng_$2Z}A=}yS$tsBkSVag(HK``u(h3$<@aJ`}cvwmf`Qf8f1mKmj1 zeaC7~G`)>)Y*w~utKn&GmvUd@0X8(kfyUpjRTi#Gt}??DrabtoWK$atwB8!Yu(tx( z$Mq2#vg{qJ?;|2sygTn!dJkc_^);?AF?z-Dmx4E|jzw{%1pAFJ=dhNwzIP%vTVF3f^Fn_%*Wxp4t>#xmbk+U zn7vTz1#E!)PH_FoMYLn0WCtQ8LoVw7UVSuv>D(1m%zr(e?{9g>15!Mm&rk`}Z?2+Z zW#jn{5;28cV3nqC_;GhjLW<+Lg??a^UpIKY<9XV&xF63e?a8P63<8GK{Qqw}-^6-% z%)SMFJg>9O6B^GM!}^csw@NfL+#gS{X{f~DdL4nq@!SYt@&Dy`zTB3-5?O9%S(cCI zo0_esuGIIDis_Wc_no!P_d0IXcz&tb2G902{>e-mjpxrnofyv#wg`0hgDk=kK7#y4 zSc62ksWieCK0-(Y-*5cAfu@gx!sJN*Y^k4fP3Yog#|Y`CEVvCqVvvBmyt0=3`kJyk?~ z@bgB5?gd_M!bSx50S8%q*Fc96c)gL|Z~Mk%;b}ylgR!Ic?53I_-`99JI+9bNG|Qc5 z2BKNpqFB(^_%0%&e81)M{XN5z|DLAVsQ+RO%wA-&EnP(UI|#CBi;k)Svjz+&pRnVp zjexNn?}Mi7YaEHgwn+3Vh^D8J_(ZLr`Ge(t#yF0X8K_;@cZ4&+5A{#DIS}^7FDg^F z52eJMUxnk3wZeToS!3G=ir_^0Aqrp&yp;%jjSrjq4v`*e)RNE))CrM3%OW7sXIg{{ ze1t#Pv_%nKdcP#X0Y1Y1MDU_)_jtTL1Q+$F zD6nG*jP>XYBQQO>f>64|L)_FuR&v+8NNAf1=|Orz5A)Px7Rb?~UUOVD(k)P@U}8Jp z6qV`G12&!^Q!CBpp&*Udy&Fj&y#P1o-lh(bsmV7>2%=2f=}0Jk66XtqDG`R2j@wUrsJLb2lq%RDkRd&Pnlvd5p+fP^Ybdg;$`%>i%HGq zhF0gjDM~chELTzygLt2i7)G&`6_)WnA#StGBw=OtfO@spp>Eb)a`5X4 z1xI#(?rV51N}NKSJ-|U+C{kPjli;CF7~P(`nFkxA6zB9#wBh1|TVN^QLu`UGm;t9; zQ{3DWnC?W)j&(|O$kJH=j_xq%Y`f1+uMAmwIOx__hMavcceL-WbB;K)YBn3l&Oa%p z-_)gxw%wA?{0=$wLPBOt`KJ}(F>8)h(OI+Z+)3FPnqHk^+7Y|p#9ziuFUG6sd$_aj z;#oC46o)`za%zLFh_D9;lrVqHlM&6fWKdm1_>xJJnHo0{E{T@4ggD60qz_Qap(Ld_ zAMMFOb!KYJlipsy{$%t-WNIuhohwsgsze(5=UhZu`C3tx*TamN?g+t1?Vn9_+XBq# zXc4Ll6q)T@#B_+L7v~`6#?CS~W-go4PC6JI*W9D*ebl`moSw#lO4R+RXRHioY=ovl z;v`iih9KuFc*~svE-(cO@Qv$ZgJWmR7z~bY+s+pB{>SDsfq8Dmzl%kok){)c^#V_J zgC}e3HJ2a;iW?rBAA|_QEke7Guq2L9D2?!MDoJGY{7;m_$2L|`kiFvwvr8j9;v@Xb zBHZgEmxk(Yvrur;hEPgI!gKjJ-S4L;N>3duCR$#tYlc@{dO2Wg28D|Mxn zG31_?F2`~3CPUsrebD1X zK_{BEr3~;oEPVp9$Vq~`g7Zglh#-hdb-TTaqVZm~;7{cLB|lH{YEtihRj|IK1?WsR zp;?8d@C~po{vd}&yX>L!NtxuPw$~i`S0vx$LDN41p5h8wB%ZmTbfs1@&1i_w& z{c@#xSuuZ%*#TjcVv+m(#*Y!`dAB!6-9<2p-5z*`yuvuacCe~=8|OqbsHGb@%fgwh zW>;T{iZb#?ej01{HIlrD2!HL95yeeL;ZCS(D(Y z^H={&IuAylzSF3oV(qrBV*M5`DS7L25B+nyoxrpUghs<_f0|{`@Od}|c716M!`!Sn zm{n)%X||yqImwFo>9)@fas&-zK}C(Nuk` zWHjZwv}!i9_FPgou3(qOrIyjO^dDNEWvO6*c%0A7*o|`gjk{f7#?Z57psY0aIb-sl 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

ZKGU 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

-|4K!i?NYfyHYAscu~4y%=^3|tCM#?cv; z&S9kQ46xj0C;gFZu1s3ClT{;yY-6@mpv|kvs*yt0TPhVx)kIO0kQh!?wSd)xwE;pd z>Z#ds9rD@$A@3~A)uEk-WormQC+)L<3u~(Fjhr=Gp>s1ssR|i%W{hosye|}zw2otP zMNb=4R25E$WRT3GiK2wWj^KGz^ROl@8P@aY%&2xqX=PMn88l*>2bdpoJ-O+@BGcrI zu@vQoU?v8{I4Q-f73svil^NA9ZEPVH-bA>T#xFFJVJvJ*!t>d^l z26Ic!c3RW2wgcM+^U~P~e;pG}-v2khR2(V|H5O^ZydoKK0>Fe`kO?#JwkSk#fiD!BcdT6#C=7D`Vf=DM*At5Yw~)SK_5;QA>z zUZ-9HgQ#q3^Xx5b$uR_FPhmqARTivFeL_>y!t2!!4^%?+gH6fmhnYFeGz4`!ZX2UM zaj)4%Ss+l9VD*F0GWeJt%+(Kd4OTx?d7msmWTb8~^n~ zWoXwAk?vqBuzom8Rk^rx5?2KaB*5r^Z>=pcv#MmyoLDE2fmsi27a7(#n7;*Ru$kDB zE6$dUq+C}>nxlU~YrqB0b%d&|zYeA~bxtWE+Qst4^f(Rk0!iHQK1FCdoc05pjJ3HZffD)*~{K>$+?OZAZB_4Lke5FV}{NazC5j8HF;~ zwGoLj!6Y*7MnIjkLxx=XaBUK*8LAiHw502Dl{(R!+N85mCrOb3>jk6=Yy+uiRxi{} zdbR1TFZik;2zZ=Yl2myhyGu?m;k0NXevqamve zuTDSY9cwAW;Z^P~&KBytp;l^b#C2@Z)MCv@sm0rYz@XfB*dx$ZQI&Xc4o?W2C|#|t|D0aus%cm zc~=(hSLOg=w&6C}BP&k{DNKu4{*@|X4IHBBOr5ipBJ07%DZkL4#jDOw=G(cED zsRs3g^O2jh6unuJ%9Q;vR&1?9(b^0a3nHQSqvI%b(eYJ{8S(WQm91CKU?weGsOT%! zVu@;eh{97vjbmLb41yS&ng*&4XQkJ{LlU(M^(?2alfO;E5A9X; zJ*XAcD@JmdhnlIT2=u0I{GeqohczH0$YYcVXRGdd8# z?AZz}qN?0AEvceGT8k+_H1mqni6JNyO&fkM4B7M887#eG4 z5yerusFyiE>K)&z3N(!!?WC?I1EsA}fR&Eudc8BZM{d#J{ESJ*ugD64d62w?izo|% z?N;lU>B6w_tx8hx&2z*zy&ASKE4xyzt(}}YG$HeU5E9B5^8%s*MkJ`LbLMDKx5s>M zT5>o&m(P!ueBbWItuK^O+-knkPQ&cVur^tTD;`xLZ&WPFnFOKGhBDKU4j4NLDc(%m zDBT?rn}%7@c$J4rHDM7Qy(4E*bIzQww$7v7#CcTgaOa1_K7zJmQq8dyraMbol9B9I z=anHD@lIPR`itm*N@yl!E3A|oANLDbhhpkGEALrvRP1E+=o}wcE8!O!FXTmP_VP_S zW;T9NX*yE`!_>T}s0$S*niMtmqSAE5VHmM5VxmSiewh*Uu$1szZZp`Pg9(CMFVv|X zBPp|wFN+L|g6e!sNU*Uivqo8XBUY*D853yO2j$3M(_|6!X3H3~$o_uW_|4j=JttLW zYk6CLZZpd=+dzQ_K91dtBIqt3p4qxnx~nT%9^o5we!yx={jhFj)B@)4Qx~TAVs%tU z3+zcx3|U#H9OiIBjlvkK274aOrR$}_nc7sIDNA^M${UTiM_61aRTQHe^ASYG$LPSE z%96tx=-#x_IUHg0HW`H31`EVayFP~zf<`i1;i-w?BIaIFb<%1oaaEmNlZtWY*syFg z2imaa$d30Ev4^0>%@&5)dh%e-D>S^y5*AfRSH`WAv_em~VWoRllD#G4yrAlDtJ4&9 zh{IsWf$(5`w0__w2ceTzwxN=Zoj)yRQ>vgQXx2NWn`T~`m6+Grnkx+SNLkEWDh_#B z#dL1L8bNAaW@*KY7AvSYoX^Y_8Zb2qnfv=LMia0`@rJ{R2F!$dTdfqMS_l%4cq?i? zry&Se6knYaQi zV1TGdsN^$rw1RX85(+HBWl-1?^nz!SlU?+Mf&+X|kVsrfN;oQSeCxX0N5*O=r?*f><~#@PB{IcROewB83`lO>hB0Qg$pi}vBs zqO!f7sW`S1)Q-`c5_V-cH{;uL8S0!;c}<=2vNFGV81m~=5YdfzEmswSw^8w60yUgQ zf$xM7H2jky3=gHwfPqrqTCq^2>q>@<9wWteVmpgkPgENwM2ZmE^wOGQ(#UMYR%24* zYN=`Pz$1EN^~n4ecu3V@%|RvQpOg**EN34_mp8}CG=MH2@s0SDN*5rHwJC5r8K^v! zn+eJwZ)P?RgObccNwF<6JCCpyE3}9!X4=;TgQE_`lKR&g=GMzVYJ~;nbV{tDWbqI0qH!=bEo&T{N503LZqxniwy=*YMOEvt@SoAy6Sqlmm#WsDSNNH?)q* zx?28-?F_2V^7@(4qO4q=*|`h-W6Z<3aS4HQA1bY%Q8!6im)eJ}FU+vV!2raN-^g8_ zn!=8;0QOKyIez8^2hqHuxw4}e)V7z_BQ_jVzTLEJsQud^hS%i)Y!!*tQOG>qzVJ0 zot+i>)}~qFDTcGsA;$4*PVx#vjE+|d!mR~i3fAsD#K;^$rzq(e8k%T43}RPIY>=(F zZ-^H|*wE+h15ph|hz{0{q4Y4b%mhZxYiH3chZM@i8sRxau9rr$x+qcah9QA#y%^#L zK5x*Ut)TE{de+T?vQveI6s9kV8Y09wO;m`f>9JuDb;P!k=zKz)tNGDfC5m>2t(JER z>8tpG5N)*CYKtaQdl)dZ2?>Tl7QsZCL*|;GQC-Q?6@Nz7qS?u*Fwn4*fjAZhaDpbVa}P9Y8xHxZS%1}nscC57iHL;~zcl(O>Ln{sk-RT$0X zD}#@>-xdjC<91AD-LxDV6|QMq9bKHv3^j7@d}ld&R5D~WJ9K1w=KSIdk0q;*iRrXx z#-}>&+?esO)*DCGIds{}779f<wUM8b78GB(SWLxDN7{>UmT`T+F0 zWGag#>altqvff$RI-81)3=0;mDY=HLYD@5x4&mWmcpjWZUN}Oq2UFJoW|!IQe4DUd zE!4~K#i!ybDRNNhBr_H4>}Bi5qMmmaNAIuOSp|lLcT@~KTj4Tr#Bj_r7x>9cr`|fv zZt_W$bun9zD3aN(NcAAL6ku0`ku>L%Grwt3kpAHe)mczDqtK3?{&BUAbE;Mi(l<9Z z(y71RO`9s+MQF+qH*=51Lr-nEWU=-O+&V1tdR#b^dyt*;#gf!^rYw+IT!aHgr1-i^ z{S$1gz0n_QF+(v>K@0;Jr5tT+}4G9ri|y3JJX1c4MAriF0? zL*(V5i3zMAuy^Nhx}L@?%S~!-i-H2JuS|qq_O->p~^fjG<)E1eU|;uuQRp7)6}8=HJ}qwgQx)F9! zj}wfl*MajDIv&o^@U z5#+EJ8x_q7UjhxYlir#W&qTPfA^Lq`6u?FI3@l29Yq)Pq=MaZ5S|UoonaMV&iVd`(qNEw< zHC2b4G(rusG@ptNA$yH7ZiA%K^G-u)QZ-1)lwshk%`~xD2WrI%AVB)fVjYMCu z-b}$d3PzH)zD+7tN1{0GdZ>*bs-Of%l2=i3XaY^Q+<ymk%U}vRITiwXQHvXq?AdneflNlek(CCRfwfNI9vJ@W4S2T*ZY?7&q_ELD;W)U4 zU@l0c&Z$RzuX^~Da$TY)l~sVN!DZP|6DRc>#kvV%9~sp(`$+5u3vD+$0fpHabyoxt zT1QRImDzI18xCvO`NmMX&`#jZbyEYF=1t*4B_gL}s9nxe@*I@aFYm!sVhN&ncMtTu zTJLZxU8G^U>4BZZq6FoR@X96h8Fp2)$36O4l2NnDE`U=utKjGGG7HO&QEGxg7I}4v z!1RPE?mA(6MO%>fI!l(ZD2o{$erG49(;^ocZOD}>RRIp6JgD=S%6FV-wD4w|8)F`y z5}VsMMFGT)a6wFbz-radBivHLo`$HJ(C6g!K0O&W{r(nw;r5jAix#CbA4xZ&1KNqH ztr4~)qT3o3_h@O>XE_ij+zGr-MVy=ANBsPn)ht0~US?}oC!=9@I_S}GA!(YNHqZOq zkUAcTqMilEorW?$$uLTdj~2zYn){#uFps&3Ipwun%Zq5hE=901ojDDyFdn*@tqi1W zS6Hv<`VoXOh|c2KV{wq%;Vm&-Ap7BA(}Y!6E7c%~?37S>Q*?oW7__Shp(t6UvFMOZ z@p?H~;c21JFu4U&sCg-wLl?>}AfEqXFDO!2n(CL^S!DBqJEaJd?bsPzPG|QFaVU5-6ga^ocX8<}%#UA71z#YGwmGY=44yf% zD{mspogN-wC4pP;*uuwDK@R&z);Vkt*zPPA;4Ffz0FS+L(J8Y%r{W70sU%vfk@Iup zp-PHKL>6B5Q4omGBw>gG!&FP;>t>56Wdg}a-*zZ%wHoSkZW+#jo4btIFdlP$yM)17 z=Eh%WB@5#M(_ywA7p~=6vg#`@lxv)alKQa<8kc^iWNiMOAFTl6sqD5sJr+j>tP4fp zD2yY?k0OH4+st(&HcPuJ;jR#r(d#Ir6v{3J*KbJ6M{eVAD!St^;aRR z{8@#o$Y&f}3@4zP{Y8hBQrQhZhmxe{p=?|ycRETZdOCk*i)}uqQi>1}#Mp9$Rh)F=DCn&__jS5L~LDTwy?JMHgZPsI{T-d4QATt1c(80#!9G z@A4ELm7!wCX`O?7ZZg`q?S$hZf}KO7yU2}2@y0woim`n$ijqQ_Z!|A&kxsAcb{A|QhSz4FwA|%S6p^IthC>i+tdZnAu58Zw+Z_D@D6^4rlcR@^{(92>A7Hoppl3IPgbowk`k?LX9QK>Je25ZwH!aohqT8{3q zq8podT_yPw_VZX#6}fzRNFuR$Ax4i(r>s4WF0vixjfPUAr}AvXFFlDK99YC;f?cn9 zM2>xkurFOXd1K)_BD8P|5g)Zx+}fKhML*^xmuWg#DByQ^4`bmjwJ?iX8*^o|lEeK- z?O`V*K~mnJvuXDZeG=w+Xn5C=64gNqb10G?${e}2AWX&xd2V`x5eS3ETsPNpa7a#% z5TU!#IQkA^>S(aTxv|Z|xh<&U3gfJO6@z70XwB+?AM#Q|q1y@;+O?Grgp#~vT9A@TpIl23rm)tp(AKqh&9rU^ zF=~5Jn4m`7C4t$~3wZBH^nh~?%C71Ju`?KehnLNXkb0gPG7JzEVd#q#Su_Pt3}=$AB{ePe0*P%C zbh8_^Kp7(QpSE#G=FIa#j34ww`J4p{hPzZPkW!-7deLw{;02=C$#8;Wu98JL2!!E>mko){#v39D+>RVb3`5u;h~M95GAVTwhYpx40AYGWpvv3He`t#_I!(lVMV%89v}tS%v1Bzs*3^Pfz1Tt8(?&HO6Ul4v&uFgz8JUSm4e zG|Tppj0Z)EHM$c`VKrszCJ3|ky*iV*BT*WO6IC)BA&AQv9SkQFOULKHrnHmx7GaG! z-y>YIJC~z@W}2-+$rMtBa1E^y(pZ72!&V!`GWePb2;?V2plvelmYZljvHFnaI5+H5 z+6V!b8PSkP1t_J?fT&J|OujoRrZ@;G8b+PW^BQ$|pwh#(pu~4ER5z&SW98fp+1pmv zJFyr(=(d>qS)n!1RYV{~C|1pAMfw+|cAy|AYgpuMY`2gmwl7vPG?W#l5FG6JLb0SL z1hEF}*=a+pJ=PXm^Rz2xl`;}6rR^!A&1T+E`kj5|#S)l9 zdTO}ku@sx>*LY>5px-uM3+a^4O-sUkVnvOxI!o)D%};vkInEufp}~i|{y%)FNOreN zFEk5TR~MqMXL{>)lU`J$h4xMsOr$Oc;1=|Sid#35S%J)ivmE#pc4e<=nCfhM&v(XUuX5zWM`0FZHdPo58Y8opg$#ai#rf zY%HBmrdoTL2Vq}w?97J;|EoiEFTborJ;jPXWkHmgl8qh?8|j)K@k%I*N(2M19P#DD zm_kY!gG-4usVam`tO`eRRsOMP3QlW2J3T#T^lywN-MfH;z$`~O2H_KM!m_eoZ9Su? z)U4B(3|bGzpOx6oYD{t|QPl9o2vQI`3o%b-tYY*-vjic+598N~#4iPCcWysGq>O+X z_}xv2Hlml=giVut2gD)Fis*c!MeWMYEAx&ooOf03SfDt9%q9^=w9yb?O5RD#V){Xn zQ}_^O%Hw!QH<2M7*WzXHcgfv>zc15 z5;SxjqgCIHFkELfN_S7HQBoMwm2B!lQ-v_5s?KoLD~dIn8e?>0wpkX{dPxL=}e-K4pwoq)N${fRSH|buI&tc{UDI4PiEw9B0g`bUDvFH zCC^4$m_Yj$ORs+TOHF=VRN=zv2G|nT4Kt;y8>Bg@tsY80VbY@+)x+C->IJ#=A3f!~ z#LSsv&8sRC#n^6N8?e#bVp$tt6jIUBy4P^uc5-jwzSQLW!725sMCbR>z{0MBx1E4< zl_ui~jWpLA$fZ#w5AAxPJb@w%ckQQJxeSHt4ZY|dp;HBm4In|LDx7MkN~E+DVOJ9# z-JGScL8^_iZX3dJWchr#ManQiiIwRpPR^DQip{=(j4JwPVL**s#XeUAq2I=m%?%YuQxn!U!K?7{Llc24t*;Qd z&jTq4@goeDQtTu+U7}rb-@FtE-Y6AH(V` z;+YZ5^k%*?hJ8K@kH`#N{#2HugC%d1b4YUyWZwX4)Xu1^_xRFsd60G3S;_d}00^d( z>qaPhKXaqmbdbAH1w9X=y-DXYOeA%9+TO;ceT7+{QwbW;9RC|-{m0y2uc+-Tht!?2 z(Id74h?3Uq#so^UE*Ln@Wer$Odh1{x*a8AQ=(WUD@ zVdFWKxM+2Uk!ll3gayk8mE4MAn6vrF{Cq@kp&~ITgs?u&E(eV174wjgX?Lrkn~&Wh zhb<#il1`v87J)w!rg4M7(cqp63SqCVuzMaL=va}Mri>9pC8Vrkcc~E>SyDHt@JR1Y zWgJTeTlFvMC#kC!pB3WNzZTC5H~(5>#_kKq*VUZpcz2mkRP?DPj)X+&$KCoVO{6B` z+E^W9;_n#Kht<%hd8(hj5V*~q*6ve=#F=DVgsXWZKt^ia02Gip$xUJgHdk(k0K5)y zXNwiVkD;?HPS=ZJr>lBFXm9P7cqAq62W2+#)-y{DS4w)G&pKI(vSoW}z-d}~xG0#r z^k>T=@swR(Mm)oaU@Y)Q4)w_(@18;uuro|*yeu2-Oj}N`CKE|nD?m*#1~4h+Bblrq zV2uLWD62J|F$dw~w7p-yjMfwGjJ_ln1d)In&JwSzt*+s7$F_hQl4^J=z_VFENWh{3%$%QIMW)XR>?42>| zm*zOgIVP5bi0_zsSzV2iuof9Q!`L$&i*dTCg+MoMnR#DCn=5@U3@0Rg$M*GMCWx&+$c*j@1sWZ9PoDPq8Eyq@oMV+KI1fKAm^GQ_(M7h1_`30DB~kE5~WJocM)rl9Ns8y@oUiZryATOgDHAhDl7}HQiUN}q!cq@ zq0L~bb5&{C8#C;Ev==J3(h=SSTt>05F`L5xq2&6Bi!|dLMt)JHxmj+s4xiNIX%-R%3VxcX}cu5%s$9!2_~a43AG&msYH)dWB@!u{FA(LKou(t7!^nJNyDOf@~#9DaxMQaHEO?YTIB+X6Hjb_r-8! zFriM9Z5`v$T@mAP8r8hBrgTNAzND-y(<7^BZrtv?$v~hsBYp^&EQ8?44jl*b2n<4W zx~5Rzs088W@QiOY_q}lB#9c5`R!hW)H$Nl#zAA)UCn88;rsM(>dQ*0rPG(G!93eG0 zGBplcw{Xjri;O6V7t*LI8xb^1-KdhgT-fsBlZdSR<~Eg`XS7fTlk~a&59Qo>GSRX| zDcOt+WIvGrY(dmaMVrF)dK+M_9bs%w$#N}shsZjfH;z!MH{;7QpUu%+_Wm=&tPn)bD!HFT~+hYx9yWbsF!e+CRxA3%RJpB@XEK#vW~D`#xekf zkIaU2HsK;v#ad0Gbx@_p(U>(#A;pqJwGm})#9sS}1WQ^=U}m3%@M0vv2gj8&(JT>y zgLBSIYmpF{5ob(+-1b={RNpJAQVL$H23hk~H5Bt+swUjLQw`cC>~1sqte-5XN!@bZtFBBRg?nXtjn;Q_RZf zkZEElO{e0U4w1!DR_n6UoVbg*4Ye3|i8ciGLWxwwn1{<`=OJd4)K2aZ_Fnl!cmC5b z@t9_o<=jv~cmz>^aG#vLsF=ZAhDnu{h)g!&N)a*b5#3ltEqhc;CcFlUAJx5whppTgznDf1re?%79qQV#wnF2Yy~q@;F6ie;OcQVmQ{omH#Dk7FwQzF zU%~BuXRwv!)e!6~mfZ>6NxIP$b$&|K0*_82dZPj#{h)(NV?=TKi9C*k$k2)4 zLyeW(|LZPgsM3-~(B>d^1YsM^@mn3kqK0JnBU9;UVp0%>IygmA=K8bw7`qXvrUEkN zoPt9W>B?0Yi*klflC13`5eZd9J~xzUtYBEOM9V;gfpAk)U>o|m5;0TPEH<_sg z84S&+OfN=s7Yk~0)eB6uTzJmXK&T98nG&!e)|2QglYD)XJ6A=mD13B!%tzUrD>8~{ z4Ky3d2^0%zykIIwwu#H0QwJCy#nc1J#bKreBgH^t*?qGYP}VEYom=LCV2(GFLBuPe z>kH?|Cb(TAx5@=95sI~FQ|U6*n24_;{Yk7i(d|dj6DsJ=)d{h0uwhz1)XBjlCqAT# z0minalVVUmCK0cx?)jpM%ye`R0cR-RMH|jm`!)K8Jup| z)Off(Js^^a$6fJ*(axE+2g2Rcwz(d~o8U83Ift)_u6 z19Q5|Wg?+{p}-uSmc?pSc4kP(8L=8KlOy)Faw9Zj z+n{u^moLmP-_q6Db!RY$?rcskyJFTf`Wao$Vm+VruHr1qPpp?&rqyF%B4-yy4#LAP?HW1+l)#UZybu zcJoSPd1YIJUGdyl^aj}K)B5m1^_K21qVTLc(~c~ZK$JULh-R0ilbYRSlVDKaH4@#2pB5(Duyv@XHINmSy`+VjrA}^3oaFCNUGQX;dte|qg`1$<@P-BruYCj z#td9%%&ego^?OtHxmNaMYrpt{s?#847OMV-)JvMKF7P&K{wM3)QK<3_L?c zrkmi1rH{elAbu%#FhejWXpyTBLLv5T?$annsTfWN5~+rU;Z;pR3bd`7Sd5=#W0-f= z9IbQy-HmCr#IS*q3A`vwX(VD5VkR0|(HWTysT|p@Mcb=udc7g$ByiRt#sKZE?_=)K za;vlR>3ZxuMZIdv%li{1ie0DEQ#lX_>|?XC^-zVSAXR?7V_Z)9io_vbN5#OET_HI} zRhd$bfxa)|muM1X(C{%IfMp_NJ50m{Zpq>rvuxfJ!)~a`wOR5tqKX(2)KOXnHg8fp zD)EMxK4CjTuT;IWH(|wML)GOWqojU_#7VhN>_%@}VwqX9ntH}4Pb+$zbxTstEs-rc z)hQRtSTU!RLXFDdBQrr%*^fp7B{L)LThWjc;%aJOYDtvx*y*zQ zu9``AOQ`YCm7}Uz)7n8$RIw@+04CWWI8>pUFB4%$$mtlGWarCxI4v5@6g$%O>Ly@f z93S!m<3*H*XhbA&wdhi(Yk9cTom^IAVo9~up*Mj$V^gZjsa-*fv9mb!-*KmLqwg6K zipy=;nxYn%A&ra6Lw)OH*oiD_6fGunZ7nO#ZAcskG{MXea*zn)1*uZW#-<_m41z+q zmwQ3kTd#_sUxl@(F?YM6ObzqM0?UHANT5wKijtglX3cnobHF(B?2k8Hdx$iX_sviaDWNvzJ%LPRb*Z zD1=qV423#+&d~ae92OdB)jMb?q_#iRIcccHFzU-t$88EDin%$rV-qUcO<-;PNVD4) zl*5L$gsg@jVX!Q!HlFm4AfB6pEVXuTTX>VCX=US%juJCNE4|6DmSin@jPPrPCR_>~ zo;lPqV?RC}P`W8%B;Rx|fil`#j7i3spdm0vtHp!Bt~RD>&uG42i?uq0 zMF_|BJiWLA4W>6rB=n*Be%2|=zICdO!w?Wn=-kILT{o4jLnBRyY9P%!$%jehj0ik7 zK~itxC%~a3{dp+20L(+@t0Q7O!`Z<|O3XPf(a22UP^Eyk3X7scURiBNC8epwN>kTj zbxEm3%R8EjA+5zlO$G~xYM-*-gQ!heGjyMZs125kjiSO%ZnY#vb+L=!+Gv{s$;Q>w zm~GIB>W?iTq0al(g2Bk34nMV^IJi?WlM}ZTe9%7m)UKi7EpkI&eFxiimwiNyyC9yG;m$xec~+ z(1v)%9yO|02dQc6tdf#Xz0{dS>!6fW-*dr0nfnZxS-y=skj#x2OJ(=H2umyLiE+Bg z)A(k_w;D%Q4tg19CMPBK;DWeQgiT}POmoSj1FQq*_F3N{U{$l3-QvE!s4+RYQr$Do}S^ebs8y?)rZboaH81&HYLov8wHd5x7y4>dk7RL5c*ao+iUaDwFE`ORhXDe6x8WMp15Elp|RDtMuzi zX1Vx2K3w6K1S4}tHdiQ%+q96loa#p0MwwokQ~YKST4tM&dU|D_(X9_s5!DD9w2HvV zw(u(E<9PWwncYw`>u$DuOJi<+7@rP}hIS%Nnq8!NZ5Aj{!lwThPbkR|iWip;CP)85 zBvrxwOEGDcUBxqoM>{W7q?`W><*zetTpLh6eYrZ;T+)wrUMiPJMEf9`vwtz7t>k|( zwpR46h`0=sNkX%x5}`ftMF)O&Qd}#@FM`!y?F_ zoyT`a0yCETj-Z02A%c^acEcrt)(t4ub9oP89{Y2fO5!%$zi~@c=25ZBn#3Z2V?3eT zb}qBxb8Oc-B#PzKy{!ExsPoV2N5Qqd9cqglw{#w5=bdLPFdlOlBYy<5s6$7s=Nzv7 z%@QuOoEbN_*E)n@ff1e^BCIEenJ{)%^S(kAY}DK77zMezcs~r9a37HgQM9X7$A>r; zry5*|1vR7?&so!qh{2sQppheCfsL;&0kF7Y^{zx=h%oN;LlCY)GHFUHZLu7MpDhk4 zPM7QULT{b$EOJZuEq!!9t9H6vRZ4b_rdk_Zq)1YgwdTbW4l9L)mdA0L~1S z3wyySdr=Xp5E~?^JH}Zh&cGulb*OS~e>QA2{DT}w>0sft%09+QPG=sdmrE2fDjiP%cG$eA@^y z!CXL&>Z-sVso2Mv9%PN>oCZTbO*RiVlI5_a6TMxtI&)M_WrJVZB=_zzh44b5PhKz7 zlZSYrs)yIMGG_&)XZoe;D0EXfT{u5TVyTT3-9RLup_1_lKG+YfMj8UyZyGApJv@S{ z28$aVSTMhAKJsqH8cVGtJLzv25d}fzjAO6)pq;{)i8%vhjSCVC0 zwk5ZAwHL4~36SuHWkcizTb5czvScfg3|?ZQ#mS5b%#+(2W?)8cz=;Xu$%-LkCcMEU zFfoDofP@U@h4~UDnTeT@33-sjnJ~Qnzv|vzB(voEW#+SfzgWKa)~z~q>eQ)Ir%s)! zx@|BznskHQzNavB8K?yQnS^b+*dR=fMWRS_3gO^er!cwrWQ@sDBZTD!A)42UJ)%p5 zgeIy4HccVaDYl9Z#A>2N?8JKyLim2Q=*9DP(IoDW(7gyV*K(vZBeqxI=fnV~0UHjn zOPu&32k?ldYOxC#dvWhZo;pCa0^-x*??eukwG-56;s*Jah_6S8)Ui~EYd!)pJu$CQ zd*HaH3N+$(j1p)?e9x6IX{asv5)!**O`Aa@egPUWy|QLa;7K!Ly6~=z!5J&F5InzP znSFzaWEdU)kvuU%u4W9xZnr{wvZ47 zSH`nWVq1>75q=$>Hvo&U%*Az`5Vo0O4(>~Nx8xzD$xyx!4QnM|@w;iLQG7R}=r(~9 z6d!Vh!v0Y()shnwwcUUdX&XR!2pnw!&Fo;CWXrItgv1gd(lxZzE^ww3cv-6ABvP_9 zu^KhqDcS)^SxCeTh}^Ldl))ZAHsMLp226^Ey5E7A4!)&o;A<1GZbNFXo^I3{>62D~ znpmreYV}TzE=N7s1`VkBGQ8EIeQFV23l39;8t}db?X*Idxdy z5l4ztsgx!1SzN;*q5~S`COr4(S_xdgHC|(k?e&Hv5*L1^4mqhW5@R<;TdDzgDU}?y zL^k^pzEcg^=75A>fCate5(hNd-jgUtwX!}9sFz4ldSV&M!P}%&$Vr``zo)N|_;!jy zVMYodeoLOtcKc8f~Iy*1C`YH+Y@m& zfClzwHMB8J^_|@)h0?Va_b&9-kTePK%Z{=ZhDI@TS-ehI34G)qMwibfLjQ5fO4Nq& zC8NZARU(ZYWtgyMs0aO8)vdfi9oF-C_($sJSXqCYf$T-mdkw+Ed4 z1WEZwxG^oZ$-q}9`G{YglN@c5QaskQ?*aGOp6uB)TJOY@tw>Bo3Lhr@}`YOhbXshJ-^%>|XT5lZHYJgW+AJvFkgZBm@Zc5B|JyHlmd!q(0 zb`2l$d87QbVAPqmSy@ zi88nbEyM|0t?c!N9*dQvdSx?O*s!0QDeJ++QeyBi%4j_iAMGQfM}xOxY&UYlu-rIL zSPmZ3UgK!G2Ha_cL@R58oFXT|XYhq~i(&u8<4`u=T0k;%J@TvpEJo8C5-C>W5UtTf zc?f|ToJs=iwEV7@)Uy`GyhxNKmd!c9YEZcr`5IuYP(s+QtVt~{TBaCXWc{4pfYfE$~>O!AU4z}{fk%i!v!MEta7Xv@$xh>cpT6{W-|tp}8b#AgxP z21wP<7&CUBH@41{=o|Dpvepf#=?b*Ra`1s^RjN0DQ}I3X$~3K&9OevC@8{^x@oh`n zp0h~R_T+6NN@A((gLOz@*=*|-D4FxhwcZj@8J? zeg~NRE5R6Yt~kT_Fd%Qe5@cdOuG4G4IvK6T8gaf)PSGd8`f*-tw6<81h_@Q4?91d_ zeD7zgv!2Rtuu`@fX5@WeN*qoS4RH=HR8DQ^NFBKEjZ;&FKo~RrX|Us9CAvij#Zp+< z^{{Ax&c&%3)f*KszEk;;7)1dw-htfgk}-o(lY^0>LQOR^kptga4u;M|$4tzBW(;4- zzm|itmE$2t%tx*q(8(H6?Gp=WRFm8m#I#EK<%H(uMCNYR1-%}1R~?S3md#B^2b~{l z(M)`6Kr_V}X)_u_?-;IDbSgPvoS&`sQ%q94G@K_Qivuz1O!JZQ5??=&7oW;WkMe}p#_<4C+g*P+j~YW&s4Hb&nQ2r`YOskZf1^(%V$~fYVtg6-)*gL>y?1+*RmBccLBW z6d7w0(fH>;Ng1Q77)O=?y%U2d@QfLb==|g$wicyU;o^X(G(;V^&A~jTI}ARI9Rv-d zibgS8X%%>}7Lur1k^B&=61je*QmL(YB^oH?pmOQ1h@)hziNk@0?b8U_X~eBW8yeJp zbgNOXsGLT7k#@ox!#W1bF~(~hc*#`eC8t&cx>3qU+)zA*$MJb6Dazr=nsOi~hsT@I zqF^k?3{&LONVPGvvTZ4sbxI34AlooQML3{=dOB&&7Ax4zMG!ZQ&!ziyoI$dTQ;rD=cY9M1VLR7@^)BscbM3W;1 zo#M1ch=DF6r30a{s+h_#8sF`XQt$_1D2nBar*`~w(QsRe8CTA6BdFr^U6ha}<@(}S zsHEQDj*cU@Qrfd zCO@PDcF7-_gHvqE4qX9sx{}9NrbbypQJW90#ZL>HP{wq{4YmLstqJwb{pd7f?N=0h zG>mG6t-#DaB3IC-7!H|)a<_VKoia2eK!u(*Vn?t->b_BZEMTt_$TU6D;|mHmf{UtD}(DBck$ z;Dr5nh}aBe8}iZy+A3?Z4Q|84K0MY6SBrIA*5yorHnfJNIV|+ePIS~<39g86*VTb` zE?03W!I;Y_ox%R4p?4|!tV`mKFQ=IKvyA*KIX<<7sq>bDs=d&%oNK9a#={k2$qumj zY$diImpI5zx}L{Eml85NUVDs%C?kYr19q8cq5zmoj!nuDoWwaHserb&6^LtvDanvd zEK6=6g~Vm-E#b_h8EwI(7|!H5hv3o+Vd%2n8rAY@9%SsVP;$W$lypwJ;y1I>0;uliXY*n=kCCs1+__2UVt?`HAH)=|rUlH%5SRIL9B*ofLq)^vH zb=)=EK>@ar;!gd;dT_=qW~g_=1w1Z&3j18ld8qoda4BqPr&Q{*7L3uVPjP&T&Cu1X zUb%xsy3y~{5|cpz+{&r!QS=KKeOAoi5^0@S1%nM^>kAX^IO)0Hh+7;Kt z^P>uNr{#dsv)QXS8Y|6Y&=3cakdwWgIj|7>5jo=^lBiX<&?vk@;Hx!fibgI3Gw zYKBk$74>;+^N30n3k=-U*v7nXEvV-#Q0dm*I7(yKuLR!!I-295=NZ^Z#SY9INa;>F z4&Eul%c69NpaHu^mc1Qzk=m}(20FN;p=v_gCAI)1y<5|boVQBstc9UL#C0l7El+Sf zBi|`yZ1-)zOl<76N)khu&$Bn(jyWKEjwl(QpDnGVx(#@ku4F1&rruuhWhUlP?M&|w z?6R`4C9DEXINyyHRh*!G6fZ5yVabYBpDq_iUfO2lyV0r~RVi0WA1J*jbg7Kdd}S(_ zSGNm3WsbOhvFOv$yc{&MXEJAxq#RaA)u+q567ZA>C2xG&hA?aOX)(n5-PoQcn#Z={ zSkDwUl2Oj%m(bXfW8v_dA%LUbZJaFEesUSK#aScjJ+%>uI+HCNoh?;=dMu=lHD%wp z5l^*P54o)RWE`ARCTh2Mn#7`ys^w@Sbn8a#HO+GNH1rit+5#`Z;S(~Jmyilg1wt~)j})BIHe8r zQ7cbj-;AD4ONaE2=QX!FvfXw_St8xk@2k+WOD!+7qn#<`=$s zY45l0y+c@FDO)v@$!Wtabqa$X8O&zTY}3ppkBZpD2%BSyukVb>FZg@{PbZ!~HhcUg zX3DbJaZl|(p&pORIFAE3e0?uD0XpC^`TBqBl6lfZn#rXJi6>1&Lnfs5-)m;7lc{@5 zX~GDYJQ8|JYTx@30K|hr;p;z%P$mjZ12BtYZjhUqN%}K0fpQ>A=D=hi8lI$?qhV&4 zrkSGeEH_$A>X?KyY&ngA;w=GM)#P2!K+*=XC4rBSsw~t5RGBj+M+Wl9b5KPtr3rF3 z6ZIR&j}^>U7hVVMlf)~YrwO~_3SI$>3M&?xRJ2KtMuUjd{>$XpyD^M}C29JTz-UfM z1BkPONT(zv6SN_mNn}Mxmz9#CBw2OFrHM(=u%akga+GPn;*GtiR9`eAjjjGBz`St? z2FegIH43Bh=x|BVXs6R1&EuS`S#?2Z!+jAtB2_8ydiw=^F^) zX~we?qT|FP3jG+MDZ>z3a^PP5HFe+wU(Z7BT}V|VN=A9?n#JVwc<_jM3<-B@1uX3gM`cv51QcYRDzUQ2RwM`v( z&ZQBf2QPpIh{q<-!=~6BW<;Tri7em1OG#dmMh5t?bJv6z7Tx!f4fJ?C4pIeRr?6z= z=`lmFGBdL>tt^P0@uDnJcFt*NTXv?4;IWx1;vy@DMm8d4@mahN{1{9^S$z2Vvz#mp zo!epc4bE|9+1%ig8!hT~rw&|lXck0)uc%|K z98B@`mwB9I-*djc*JKs?S)bIw6ug-6NOAyk&;y9q%tSeuZnYyq@;~UIBJ)5ZoV-B* zgas^4?cWbd(Mr#;3qNl1-DtL3EJAp|1e?uaaXM{Ccc=C}O=ZKU(_sfY@K092X?Iwi zkVWRc2z>S_sr_{(swb11veNgo#bI(e9hTJo+DSI2*I|Y_ybM686+Ip*Qbtg5I`kwJ zr&KfJ-Uql9Qfgvl`_7@EKzA1rN|JHI$N}y=AnRP@lq3L9mVYkA;gV!4qA92$izf^9 z*UV|MSSiJQFG0YRJXiVpt3b3T87-|hrV`HnD(2pUcC9j}Au&z__Ta_rq|kbiY8Rk5 zE7R_?R2Pp7Z{ z5f5bH!KAoEtHYF)X_mFgM5WvgJ9=PNrZZE@F60KJX8H!JRBa&-kf#3AQp;p!qB5uk zB*)i(G_}8zJ=Md(fGy^+I?PTdXmX}H9Ii>WTJ*C?HvFXyLI|fJHPZ}Enlim+2&^d+ z%rQII5rUbtCo(;m6y{9GK15#^JY=ByfpD9AgX<8YI_aN+Y^j4CX1CQ27BNHLIk$Rv zK(^DFWkEkTWl`E4$k^g`SlP;{gP);3MR#(d2bz%!|0yIYlH|#7#xR9W=s?4H}MEuQN(Eu zbVFzyU;isv9u$;1csqtTi=lj|v3-60Xb&eP40=Q}XL(R#%>gNjFAE*%0tDd#{||04 zg8|Ug{TIlmNfu>!|eyEEdDO18uUVdWw@n)(1{> zcZZz{NA_HBQ4wfF$dMvb7Wu#&hczBsv>-!nqq?8v=t9myqk@gm1l@d~((KXo?Leih zP2WqX80;C`(6gr+O%p9Z4iwN55Lqf>{b5EMdX$u!lOVN{zo~=w=)=U|J#mpkM&ytS zR+18gOb1(@W1GrJC2*edU5DWzNkE9tD|LVoGX=CUTT+zQW+w=8+l0yO#T_Dj!RbK5 zA+r;e1KQMqE>AMR8AXd@x9UM|1I+E=kjX@K&w|n!*c~4u!@Ag{Q6(K!sVW0BtlQ*< zLLXS6%5}R0#13z;uH_RHpoWO>#6ihf)(TjBy@};J0W)|IRPRn5=u3uDK_z}HhcNc) zfzNq?NuPNrm?`6WEIVn6F1-o{I5AaIVK>4dixV$S^dO60?>&6d&_Z6n$?hhwlNw~8 z5B#S@;GtKi?>x0e-+5>_G)CWRvmAC`-$~VahP;AmeKr%7Mt1nV*QPp>eEadFi5wGm zXa-o|$i&G8#Fi!mfP4c7<~yJeC>`;U61#8kK1gYNw8u9dRB9`L68XCrdhUZJgDv4j zHN|8wX&i13#3!zNC|=C!$P_mON1x#NFtstlz(AstD0Mm{*vAZV4m#mH ztPoOw7~lrTWXhzDEgEpTVF#mu%u{K$41Ps_Q|XAN@dg*++}WfD+~K6pipkvtqcTwJw#2 z3Ehk&(fweS%o|i3n5(zsSy$zeF=En$A?JjR5{oIxz%cX>jB*ChwJkiA?gDCppbxz`G~-Fe)Kw*P#^QAOLO;LJlke zq({R9F!q`jkTY)jHUNN$5)_%$jW;_63wW+v^j*+{MF$K7OuB2pL5Yv98|BMk<@H3s zQL{4*YFG|T3@2k|9(_^soPk=zvr6Aqu*gL`FpNPXpSobUl{RO4yQL;$#ic_?)f(15 z*ee;65o3&skfO?#cG63w!$VTMn6;t2BGi;MhXBfY%O)h>$ts=7Is`#IyfyLh3KhLw zI#MM-^meHTGDONXIi#YHpRAy_%ZOm5bU1pubX?NKWuS=yu$t`rY!$S)WSa}KRF>=) z*HFDdf~aZZAC!XcAU0JPWKc7Zg=td5CPJrDji_Yf0jQ9H8soY`K1~>41~wghhET8^ z1`_e8w=7Af8Uq0^CP01jH&Vk-k>n~5XiSw|V~{*1-xNi*0+(p11JVuB6||ou>p@BW zSnSb^vt=bdGC2yD5;w47gqFoYpfKn~M=#S1*w@iw$-Xh9XFF_?t2$v1Fwlkfjl z2MkbFe+I0&P;fL=qb@^;q+H2JsVxb~iJrk0_@tbf@Q)c#^vlDq?1UcxRh097vL$u! z=g7#BUMll^G=fBdgkMS{g`?D!46;eIHy$HP6da7h_*a^lD&ZPwdBs_7dQs`L%dd!< zHm7g!x3YL?IIAF)rwXaLf*zK@zmEZ{Ac0j#0jn?=4QC{*Ma{$~O@TDpiEvFx1gQhR z#l#Uwm}Rp%x;f)a;sjBzj~avHYAy#(OklCtB7Gn6Y>-y?dlGkwvWmzE{uyR&zPKMds3bQtq@O*QHaZ{Y!x}{o-7r3LVdjO z!#P}lO3dzb#z?keU^aVDCFQNFaBPjq4ma(X7FD8HTZY12tp55-)quCBEd-lEjOeCjiQpd82?Q?;q7)J1A8^~luuB9$sh?M zBt+hb(qrgngpN>9PUti++|Y8&;iOt7%~%35veGe4b9XYvm1tI@2rv-fRHb;pm&68K zXR?7V_9=vHoc-9)4n|gz{|t(P`zjje5gh&$7lDXwZp_RxGBkY z3)ts+5Ca1Kk@%EYy%8gw=7W!?4nEFy|F-O&(_+<=WU@<2W`n7eZjPw14ovAWOnM9} z&Q{5YaU&6f&SGW&yPA3qMELEkjUf+>) z#|eRf0bW?JjalM{FjZu{0H~O_Mm7+Dh2*^)M$i>g*dLRzR)AH%#}%Laa2uHr?R4Rm zk^-kE@*b5d!U!BfytIvuf+Lg)q_ACKpQH}Hl0ug|f&5&cqHxd(kwX;w7_0UpSv8Ig zx}PB#{U+)fAjD531VcZQAtO8XdZ34yoG1fctw}O4i9sqf_R9mwC|6O(E-aV6sB7f> zDa#DEsvVaDmkXmumXkLdZyu*~keycUcs$fQ*3s0&<_u5}|71LqL3w~W|8c!$h?T0z zh=NV5r~5^cbT1KB87zF#->$Z-NK9}-PVvo0yb~JPSBchD0Nl%h3S-?KK=< z<+@VeE0_c0tshC~oHo>7E-ZrQ$ynAsFikQSYoa+$##637B6dkpa6a@iBHD6mJjevCxjp5m)=qA@g8nqFLure)661HX{0l8Y(inI1Vk zp>%9g(i2PwqAa6myumlDm#illUS>aaq%6Wjvm0R)3s$R01Qg$mXhkIB++5S&g|#}Y z=s;`+TjafqGB&u@egSD8(KWguO^d!w)K-DMQK~3TcGfmbxnq4qC%&8x7HEOFtx1rQN5SThgM`!|+!? zbmQz%WI2G{=$SHF`Slct3afaI3>Xm%*`i9lhQ?IXHK?P7YY?i+@Ht8h zgUTjkv>ud>R^5fFK$PQB(v+%uG3fz}I!Za!Ce`qfP=VpU>@|jkiC7tlwLSR0k;*?- zDiBvG6=oNpQlz=7JK}r;ucIG1fW(Zf>_{pFtutdF2nFMmt~KQ?0Zqzy!j2dYx769c zM0Tmkl?_HDRQU&JI#vL&Zb@&+>0RGJ2q3dPO6qx12}AjX)GMb;cRwgt##VfxQ;Q8$UU~e3j0243pCC zlmi!4DMvC6$a?RQlC30IN|nwL_ze{8MokYaWyHvJn?IlWntP%1#eHcXzEtq$&3(gS zrV!RXA&y{wr`?Pj-q$o#6$vXp!D|wZSAKWvx4(Armk$*lcy!X&K1jLrvk%&T{y+Zg zKP-223@$$r_Kz<5*ZVKN_QUgU-v4TOTDEy8seAF|zN4T2_K)xM{*UJ!cdp9+S+OVl zw(aLX`C0ZekNo@3-fh{qJo)hXub!B*Y3uw)L-VtK_k$(9n|2ob^xeB|`=67(eQe3B z%)5Qnp=ny@Glxr8tbg^em7n{yt8V~X`PpB)`VO#rI=&QIDHh=mARC1z_Rd%H^}<{& z%r(MXFU&WIWM;Y!-@7csX5+Y*+r?z&3j#|it`c0#oe&w&BdvaL$2x;Ijkj#xa(K(- z4SW;UJl=kl6n}gsk~H?~A39HrW8?gWrEzGUACytY@;z%%N$wqIRYJm9Br324J0LuX zpXHsOSbXB)W*$6H+t1Z^&b&nsDxO9pB3|A?xw*R)d{jq-oOhr(3L&hk3$gv0d^A2L zLvj*7n38x%aTTC>%qfN|F@0JcNVx$(-0OaO+|KWrq;l-R^2EcPdqm*V0Nn!IJpV<$ z`PGpt^`*(RkPsfDi)}ae$AU_D5*eo@zK*YZ;U@tkR(@fu;$#Dl5yXz`@xTKQsPfS5 z_>yKOmc;%0>T`DLteZOXpTTdV@r%qY^01FOCd^}O+r(skz|1($Vw?!}-YEMFe(g@u zal6Q&obrs2@ilUubL063?#ovvxZG8U;1SFo;fV#w>&e7IA?48*2bV8wO;jsq~c@$_X zB#|GDiXGJ4BW8XaxWNX0188I}e#e_f*>1sG>^P8pCP_zqb@#n z7$r+Q_rh<86_O>!7x*X=@%hFxaOU`^@#5i0WD#VOrSW`B;up|->ifg|Oo&mTjPX%M zgU%h_cpp{YobjMk8suh|l)7!A@{>VWvDl|S3?6FZGa9`}jkTGqE{|_g0jPc)(@#qi z+i^TDs(vb3_6>IIIw|*^!stvjbx7pls&3#;s5<^+5eGlZT3^&e*Rx+Neq;0?jc_v>Kb5I?szWIqevLo= zqYA$9ACkAyp0#4Hv9SKc3_+U&C*!FxQgG!T|r~Yt{ILq+Q*iB|Ad9 zdb^uC=4;Vk)?2%CduYd!t$~u(vet^$qN0|vKvPN66w_L>w_$r*7cjN8wy7VOF`4JC zw%C1>E%ww*T%~5anWr^eyrpnnryr=nmTKdq4pOq1TxGFmS#Wt$n6?7vdFWp8081Bk zxcAq35zU>o^arYg5%wAVn>_mFY&eyGr0;+%BP7p4a9{jAm^I1_9=;7@trP{xIJg2C z*T3H&rSEmd%R>!rVn!H;6PWGigzJ!)`=x)2NB;s#P>kvN)xt-{=#jlG3*B+{oy z9+4T+`vxN6#bA!*ysb8h9lR$R8e+mm-dfDqHfFc65b|}PR}!MO?CLeZX$ZCbmg&3c zWR7lRMNHrMG!_p2As(ED(-&JtWurykSkM=6!$Ar<7~rTUDp|*q2o0jjse@kJ4)E4@ zh@kzDoBa#`!Z$b*k^mxogY$U{7@WW%6~2Q#se_fgE#_@0Z#BGu0jUSb!NJwMt>x`A zW;>4z4er*FV1ZB~>67ifN6LX}g~2~3{5`x4F~^Z4)?MGY%ZLYL>%EB$^Rl}qnW!w# ziSd>!d$RuG#;T@Fz-e0@hMn09KbZ7J!8Hrnh94eIN^H#S$D+E)V|HnFE^S~-0gt_5 ztFDa38i$=P9uJPp*%&gL-P#O9YyQ=XH?ctQjxquMB zSOI6Fp75Ifd`^*OuLFj`60}M|gM=OD=ZE z1wu#ID?2qQh6{h3jhqsM_)frfkP-pN9t5f%N6zHBG8V#pH_`)- z1!o+tB;x(JJAL~d@?esDg2C#&zt*=O*eLt`8-WK-*pr@Q^;DV%G%%7)q(W+8ukR#q z7-{{rdI(4`4x^_=2aQRB9WCx%!^%PzIta!QtUugCsqLb$@s8z%TDGhHK(X*YgEl9( zAj7eoFzDbHbP#g}*o|Q*MRT(cvftw2)so`g*rZx=VnkMEnwAn5#r2RZbS~MG5tgLL zbAG5RU+|!3ojg)xcFKO8C3`=MWuKSNr~<(nF3cPC&xQjUl4)qX0}3TWO2t6uuv{E8 zIF}@q3qx_#+>@+S4tRzHkJ3cyB`b4mUGGU7Q&;Ahl2BPAE4kixkE$xlpxh{q^4t<$ zkkKtE)5#&z*>e<;ie;=AWeu2yA);8GJ)wLJEu2aTufHxWX;1SHR2S3DZ1iTm7atqA&7d*${dII zp2><;1`-80H4(FsJ65-I${2b)@67al4&=$S8x zW_Tc);eoi=$D*;1#l;?p#vX}_{qtz-pT}bRUp8XM>J2=BUSf^$4g( zsd~^Rz>u(5J#?H))mx2fnt>Xl+<}@{xyvaf{mBY4nUKDL#mtY-2rQP0wu5OfrWMGI z_;s@A8Y;R5(&Aoa|K9D?cOId=^jZX-0 zl-nf*_=mFGz8^|D?^8tFmr6NT`UPYnKcIMyf3cHG$oI&1^5dRqlzv?iCBWkZh62GA6Ny(WmbEz7k8Mi4n%md7!H+%O))joyeFwW^QZao+^Fh;tYX@ah+hDookLb=!#jb2hVBDjaQG4dx7JQ zw!*gNXe@_f7hb?mWFQe9C&=kwG1Cw^Z5m6QMvdykGzbT8`O2GX8p^_F1zdnKPjk8P z5r9FQ-d$>Tda>zNh8F|V?bwAUb@m`@;^fiYNtoQ@xcPIue1l!sFJ=RCpTp+@ysl|@ zal*96O64>!Qg9ymIgbkmbY0VY$i`eavTR(WzzGvgvIx@vSqo?w$cBCr_I=e*@4F#} zoVwwt9}aD(dLyh`*JfSUDou)m9-uSR(Cxnd_whefbINa5pn3U<;WZsr0qucUj4m6n z5Y#xJ=j=N-S#ym6MN=i~P;$IT0ea%XKj?oD?d$)UMLjrP;tgYlwBUb+DVI^ZpW!SA z0Z}lH_@dk31?$SJzruou-zs@Rzymx3(5S!l4d7!Eu*%Vs-&6c~MF9W&ABhb|BSf@|l`Vf009ZG`pPUYcf#=$96Hf{lvpQHh?p@a0$qp zF@A9LmeP-&j^2Wvjt4t@l!K_|`;!a~vJvqPDlyY0m3YV(sVp%Ck7lE;iDtubjj zv(XUXUXpH{(87u4Aa3p*!1Nu{`c%G3)KaY?lB^j>m8=;^b)XdoQaNpccHHkmtH8iR z4BH1GIoo1P{{zxQ!vxNGyQmPS@(%bhEW-yq*L>($PT5sm=6LtJ0%}eEM z9Fb9H4j_ zaNP5h_(oGh?gREp<)-g)Bb?ejrEiA8VP-Z3&ydN_I;bFyf7838Uf>6iQ0hpebo;0T z#f8)uBzC$y14Pr~NE?Rt#UPAf?D&^xK?wd5&dG7Va6$yPTI2YL4jMui%%balFe^Q2M#?~6qCxWVQbixQ}o!hgyL1EJhY`OQa|WL!2r1aW(4vf zLWxk4GzArZQq4RgDjV>ckiapR=0xS=%IVP@*Nh>|z~qOZ#$%R@&5W>ACS3^e-svl-7#qof#K ze!3S2PQ&M~-jnIH!y8gm2!7Ysqzf`zMG=FJYvA!r9Om#1oKf&3#gwTqd7=+5)HcT7 zejjGNn6}}#3)Hv`gES07`TZK$e^oTS`d$YGshCt@KsNJxIiL?FG1vjc1KloXj4<3P z5u*>&w3eOxYzGc3qm0B4UvQ9!jnJ?@uneN6qukHS9ku!}g6~#o_==%?PnA0`Nhvl? z(ug*;QmU}pG|7x=i>C}7SPFD1?nek&=g{Rohc0*A;Bt4uRG%X6S&YF-+8hB_6v>Nv zM471zsc>>4)tov9sR?dO#5$P{>yKCu5MSQ`#JXkdJuaDpvs7796=sp(GJS6@%j`^ zM!W~gGM#!YJV^#|SjUmczr~%FJ@1p{y_E3-sU!s^G{dWzT^Y^>^1-2KIp709H_Cg9 z0VSjmen^7H4>kGW>M1q1>Vssz-1@`+@p#>Mo9vw&~OTF zj&ONoC8Bnxr1XHkXPq@L_OcVq*cH!s-8N#a`!8GPz)+FZQODQ_Fm7)&)79Q%JBR{p z%w@tlx|1ts7|O6>w$?oL*6yaRl{?H3y2CLPf1*fly_0b0E02DHv*M4i=SGG`Ci^wgg+7 zL&eRlpu7-uq99$Dl0B+3O0u-ii23b4+gfjwp6q< zwFFy=0?if0#m#}1P;0OmRjF)k4KxKxDuSS=a%*!-QEPB(d2?w+d7!)`R1_>PZ$eFk z=>II(zI`m)*EaQR@A(tU|BG1O1eR|Y!}33-R0k^1+D&B@5UdbHIM7s59I7mBY6`SA zK@1@w!4PD-yeZUN*;-lAiVYzZ<>k$lki}pySPaQ4F4-EY2vVxbTAG`ST3Qe;E-8oH z7X^xgfxy;^;*#dpU}Yd!R?*sA8Y-%&D1yK>mj@~;DoR_6fxo0U5DFHDngV4ZbevFS zaZz&sa^H%Qi^|bGN}B`C!II{prmZNlvaF>XvfI>DURI3aTANzROIj*Q5!+ha5-Mvg zstA>Znpy)WD~Och@}lO-rlR6fbgrVx;y`%|dTvQcX=zIt=nR%Xs=L7A_Ax9jT-V#y z(bn4*>M5+=*&X^5$N#7t?*PYJ$8uchkw0wc<}~|LRaq5WR#j0{P+C!3T2NY9)KUq z)KnFhR29{f7nN13jrTn1ARO=rgz$4U*qV#2wo6Q6TH(stwX`9ty1M2Y+uiTLes}m4 zJd>jyf||CTu8yWXE8#G3GKU6;46N`(TU`T=uASXY^ghUazK%7aj!;uiNQe@XD17#` zc16%at*WC#>u%e2dvA}{9qI{n-w|pl6e0&7%#UUm=dNh!z;Di_nnZF@MPab8vaqPU zBv39ysYxtQG4r;Tz@Jc7Syr*Nsks%iq?WR>k|ONOZ>=aV!Q>77pri?|gfi(uNspHF z?AJ7D^=WH&?(FD!_G=Pn%9>Eu&Yrg3o!xuZb$4Xn-rL*Nvv9$JZEd}`@7h|}yt8vb z%g){%q22|ZJzMEl;VA^kUixO%_5GQCsGz2;Y1@vSJ-uzsJ%ww#o0{8pY%8q2BebLU zrqCWZVOrpO`Dn;L!chdLQI6b|4Ot+SbPrwqRC53L)k!5O<3IA!is#i&B^F910F^vi zboKL+XP>T4D&zY&UBy>Fm97avC3Xi*0ABL^-PPIR@%oYn1h0N7d4lokq%yvbdnN>x zJOg_5^OA=0)lVf4&R+dg@?`JTPbH5YU;R|_Z1mMnB@b_3{Zvk!5LEK``_<3OX%m9V z^a(*_#)P19`c+G1)V})=4kEfEKJG?rnjF(GoLQt7KA*jrm5LD()2r6ez2rBcgS}Nl;(X0tU<0C^4bYO z<#iK+%B2&6%Bl%L<+7`vN-U~WgUYLOQN^$?V~Z+gy4Y*3eztm~%1^%H{1nm~%1w@e5sZ=DcSer7^Y**GDnTt6YG+%O@i+<4VfiL=o-7OOt3=1Gnn+pTMHH#9aZ zuUi%flojEZj2w5i?P$Sg*6`71ldyHP?bx+jh$;BmVcE9O@S08u^_z zXR^NAv#O;f)WV~;Dac5E@F&-zzk+1uFD2=}h=d>H5W-`^XCmQt(ZTc|QBryIA5n_W z4p6bpByQ7B6EEA-i_bCr(SO;Drx9dzSr1!lTX#>dy(iSXa|g~p>(%1A6sj^^R^DUf z;qgh)qt*qIIru`I^4st%doWNMtiloYf|@{Wu%NW4w6&n}`e1QEP3iUJ6;*+fvS1Y! zy9ilXUS3pQQF?traZzbyLFx54|6Ua=t|}-ER#udi6%|#N6=NxfkWJ0y_;6KOumB(9 zswgNeFWOpAiLbpCY%OjLl;Z<*f#$7PPMM`n@4~TVPQiinop-Ll@4U5jb%YS%s@rip ze!Q(W)M5fyA8PvvV4o73SY{GS$de`ec;6rWvAKP^lPO zZQZr)mbTEHTd>4E*(4@a@7%ScS6ia(lK~X-2P2Oa8AFa${sxm+`G*i0qY-D zuQQ3&|KD)l($ujl^buI~ZpGfWRQ)#D=>?VtQJUe&wcJ1n|>uG52 z4uy84?ZlT1+Q43X(Wqx^O5Tz`$L0l)9c-vZ_jkrv`j-FxK^X!1wCwK0Do z{K{?@eqoY7?zszhUi`gJ{=_hU+%p?ExxIu76`bd8!iBFgh<&*3#&rx=1lQMaJ%#Ie zT(9E#CtPpi`ZcZ>@sD_DogT#XG_H4X<(Y)QN4UhjxX$BxA6Gt_ViT@IxR{U2IP{v* zU%`tD%#1&R=e@W-kL!!L?!(3UpThMxuCurZ_Y!X}{`|US4fW`VC;mk`h3$x{Wn4ZYp?d;>JU5I@9aW!$<3@gqEWdNB8fb#?SR{}Pu> zTh_62E5iH-@=a3b^W}G@5;2u68@n)?=+qEE(PhxbnAktJ3ND6}?dk|!D^@h^Xluns zJXeHzn_8NBn_`e-Lq|Jo;Ww|}_(Jk`{%-m^TQAiAVt3Dsofn>2-@UhMr}xGu?=Agq z=-==EMct97pFgtv`G+33lo@&PbmeN#y}wyIX=%^4|MlI+Kg`~ny1Mu;|M&2d=YKQ! z^54Jpqkq1^abM*rSJtMox9#6wH-G5=UHqQE?cbB;ANk?AMVI>jYVXQd7wvv)+KRKc z{>}ZjOy2HO)f!9IpWgp};D8Of#3?30ZZ#Z0DMv5=_`hDUSKK8A#b1ac`1@<|5dI#K zf2YvL)ZbTx`g>Hw{=O={Djw7S9!F2&-*e*c@%KIPZ}|JUct`v@w8C%1Z^dQtpW;K= zOJ98Pkpphi7fnucg}K$d-|~ocvi*eft1feLQOets8dIN4`?txVY17lcn6Y8{-mH*j z&n?S!=N*}~V@~Vbd*|mBE?n?uMMq1Pm#r*cRq@r}g+*r;pIY+EYnLr;U%Ii%TfMdV z?%J2Hx89gj|F8A$+%&Xe%c^Hqg;sxMb@9#l4aI98Tl?L$|FACQ)*pW+X~U6?f!kU) zKfmR{rk`$I8=AfCmD^``Jhx-l&Zf_PsppnE&fIxmck$kT`CR0#k-n{izx(3IpKJH- z8frTf48I+2IDGGssmH!{JaXbQ_y5aZ&VKLM597Y+L({}x&NaMxG1KDO)e|7Y~! zCzd{W^c$Z)x9O>kfBU6x{^aRtfA^KY3p_LP{B_UH`1ap?XYqIc^TnK(x4rV$KX}Kw z-~6>(M5#F&#$c6Klv%O^-5Nr7iB<%|4zsz+>$RCP?r0U|jKEI-S9vE-T_}!OE!ibV zw^n-tHgoe(pn1r&-#lyT@|9D2#g}cC?2OzKHnTm$dh*@s!0^plMw`u^VRvOLw>xG{ z{hOzz{;y}gc>S!YFT6PQ{^>EWXpu7}Pf4<9W$lDz)nP*KLeiS_x_ zmxhmCm;cat=f4P-+nQYwIW`O5&91YW>TKq1LtXf8`<+9k(&t;t{SR6mvG_YJyDa7Y z3zk?R)5f1WhMBVmY-Vu?^-Sc++|I*`cGI-S_y95 zWA$IKz5?)fAyR&u^_=yC_KQbZpLW*gl#}%dT2?qxtm0q6{r22P&E`6yyL;)!p>xNf zlk5@yD9GGP4s$-4d!hE@m^+ubr?x!pKrL4|FFO29&Nk}qr^adkRBaICQCR9rUcRNSCbVN*?PXA{qGI8+nYlL|v9tV$@JTK0)Klu%qa z9utbslZpObb<*9HzA-D9=vvyC2Kx8>k#>$aq%q&Ob8{95b@IBYRQq!n(*4T4QqLwV6T9yvTayd$oao(v#Z9B>nT!fN-^0vm0}7 z%MWPQM(d#`sscmnw8nOu{a^k{xE$8({MIjhA?s54HhWxwTX zQ}2h#=*TYH>KZ+h)2O-jjGi_9gIJH>$O)H6!Z{*5lzaMnv+g=L`#AXq9Rgj{X?@8o zwx`#5yL0E(z4fhGuVsIKX3EadaC_wF;_%%2g(W-`G>7X>T)*Xwhi};;k#*;8TsZP| zQ~UPO@7vd3JM_LL%w1x;X!AzUCOM+pJ$g1LKQsJ~xyuiNifcyA-P!ZBPVWb{ckmJX z_W7tx>6%$C?Rf6dS>|qcWF*`67KC)D##>jrCAoG>r`vigziP|STCHwfAbDM&(``GP z@3vXKDDJSJr50*tHc(YSz0Q}fBTEA-9GbZ6u6FO}kVsDtKcb~45k)V_a705=bt!QbadJSU*|m_lGX>kk&;&rS&!$rriY)` z%wccjYjsc7Gq?;Q<9!r9l(4}U-R zUuRmvX_0@`>NFRrSYWj$*+z%g1q!aU|K_=#z_~J)b}5kFaKhAS6H7WWyy3ENIA@PL zd~#O$hBe8N?`7xj5C3%b`#IAO<}Es%v-jNWy_aUqzdy$UmezV3^R3UHnqjp!+QLWI z1Ue4h9N3>}KR)l#)~-pr#NF>7!7n{uS3lhw3A`GfZ4M7-=kHxJFZ^uwo+Xi?;k=3I8;g;}nPdB;8B@XGL^yTYe#E7rbzZH{(L zOy?^w)rGak3>xJ{1d%Q&9c9CaT&D%vi+ ze8|*z`S?+@MWp9jQHz55Aq(`b`OuGY0>ewSryWadVpHZ^Z=`ti`0T<(k>_&fW(~hQ zYtL;t=d|~--3PUfgR|$Ko*7PBc5bE!AKd`6$u+#pJNG{@?yu42{zt=>Z~APfvM#iA zy>WQHvBV3d-%|-`t@NLPiUXD*6$711f;InlCsxk$AooZBlKli zcU|OUuIR3hoXwq=VwReGm-Tz!mdacN^KH=Z8{DI#dBSXgl7DR(m3*f=#Rdd(+g#As zIn%>kqmjI?XS*^Z!c2btxH>R&vliTBw+nYWX-TRBF(+r%FA8tcNX*%#TduowgVcOU zw*PZ@rOooVS+wr~Ii->CZ1D3oTzPvtt$i5He+sKz!!172QIbQOxbKj)kL+3rpp0=1xH+WAS6E3?I*7e~W{2hZ?Tb@8 z#D@ByceFHoBXyF1-GS`s-j%iTWuk9n`o&cAK6{;9ll%?exPTZ^rS3+``PeL3XV zgCFKgzi6|wlKHHnaT&(ZW(SJ8a_5x*~%BXRu3NouiGyTk=O0u_3*J(=?|TE z4<9Q&;%UEss5s+A(H^Y6d-zm6xjlTW^kH{2|+Kw)F0Wk+V5%nc*L3b)N8hTHQgd?u54RG)$^RB=7}gAOH6d z*#7pBii~$4P1Ro&?HSeI9X>WKsjelwB$Q{*;3$ z_xe`2Q>^|=$ztQeHdvXE`h#DdwR!%pUYoUfLFCZwkwbGMhqgx!6-4ae!v&)bv#rf~ z=m%|9dz&r%gCyJcHqW(LQf$IMZy^Sd@bTP9^WXYqw&%2Vbp2c5&hATj8Fy!A+@F{6 zRCdM-d5;vlH8Rbt<$o#X8&D?>j6kort>2r0Sqf&qzrS_MaMRH6`7FD`&^Z~pHmVM6 zvOfqNb(1x_K6e9RUBflr`k>WPZ;Kp(@U;vLKit$c+&gsg;oj9^{rq%qq%?deyM8VV zx%%YD%i6w4W-Xn0EDoX$7RnB=DOYCX$P&r z6WMi|IcPm}c)Qh-?^|K{^%xz5NxxD!W@;$^6F#M)B8O%g`p9qzV5Owg*v>l`deg&34H0$8Eat^*WYwv={jDzT3uHmI#_lvb#V0yUky*cpG z(c5emx83Cqb*1dJI|@9{i({B~)aCAzqsYS;ykKmv#~^b0SZA_#wCGpE**iA8^@D7; zXU%PqU(Q^A&^q@-?)uYa_vzVtFXU!i%x$}rBO-^c4If_+8J-pyPLB*{ta)_So~LHH zUzoM$jamD?Bt~N!8~^&5qqg596|@b#_qn<~0fW~^shHELnB|b| z%1zD~eG&}j6z@kE_E&32z z5G$O}_pT)}1N3@6GC(Gphs0tX<#eL-Li38b=?@)B_F|M1$@vc*@`$;&rF)Cr%l0nY z-rdpN*}bECr&+6eW~rVZo)?z)%n_qJ%%D-;A?WR)1*n8v}3benK|0?x$Ro|&{D6fHjq>s*yytU^HDH)otCst+vu{rH3cH?o{JxB&E2&| zJCuENrrFolt=Vh6!CLRaD(`ArxWN`lvzdP(PFXN3e%4{Or&~|1ww_6~n$m5N)wa=8 zU}%Hgn|xh(C_QZTozpNDr&vu(Z00wu?^uN2H5Wr~B_WBdKZRfQ0 z7iP9y%3gmtukHSv^^eYKdm(rI8?)Pf$N4;lb5=5OfbxTQWbcnL3;+RS?5Tv^E>Qy z6cQ2KXamr-_2I9h#nUNcf6bjJNpA|2j@y4Wiw*w-Qu_va@k(C; zmyvUb^8C(>CCN{toK4JgZUlMqndfv32iJr=E2DXaD30li^XYal^ zCK(ydYoUi+`UowK>~SMTR+J~%7mbWX;(Ss52|+B9n$#{D`q?!%WOHnziE z#1S8c?wQ&9cf2*!_}0+!w}!5ZoZKBbxiE5aU*zNxvqt~+dB4??VT+t!t{mJL;r*Qp zsus{&eD8u+3jJ>uo?cMy|H6Xv3;ZV*ytV+*mlhN(@PAPFZqYl|0`$!F)@*mK-wkYT z>&cg4bz)RZve`KxE`qrbyvc_C;de(KM!QSf;EH{{cl9rXD}%Gujg4l_=CU4orYbP9 zMjP2W1dAhG>I+wHC$xtHX(O1zMAL>SwyqQk|AXEFIITO2n@Xc5Nr9naIzGZAakaD5 zWT+N9F{4|p(}qKG?2(w4SUx~4(PLe?S*WFp8hD=7vfgHft9N+UkjX{m<3fKKdggFZ z##hCSn?*|*I3bW?>e>z9(pNFab81rvvMdZ+=$jKWcC*6^gH?4Ug z+w(h3gd;P$zXaP@8h^X3-}5Nr@8_`MX#Bx`#|lD4c7?y7;&R1)GeluZWmcs>zp}Fe zrB!^P;uZl1Y-z-?CPxNF5qQb+>o1BrVb3nbJgyxMWQ;K!3rgW-I|eV8KFhTt)^5wL z0MIE=fEnQN8v^_3$=TtmC-uj27q-LgGky89ug>1EYV>g9=+O4jd;jlpCjG70{J*v7S}^CWaBbjng#KdCT!u=IpYgq*Dt}I|{O1%2myF8a z9as5`7zt0sRX*#}lMp}S%d7Dh)jT)pRJni2q%$7nIb1`t>$6>*R{w)FB6uy;(78ji z>)TnxlMn^)PLOdYFe;m7}Fle-|tTkNSY!^vIfke}DIx8uX7ETaEv< z>hzj7lb-ayU#*MfT|h#ygx>sx2)5DUxG6pIFuDM(k#8$&(KDA8x^xp8#DZialVDyV$8n#P;7eL7-RNRhe|W<7441HFASeLR+jO& zXm6{2d-%y?^q}tpCul)e1ufsmt6y%`)Kni!oRIpr^{M{tIxW4r z>|KoWHh`Um)ZZrRB+?C@s$qMQQngv?=6FS_JQxjCuR(v+Fy|nw-}E zPD$bKbl1l?r%RmQ;gdVU3&%e_F>%xSPPYg?Y9pI|_xIWLDQ0a0o9s)9O@FDg>A#J# z;Zrl*5B=CVe5&Yd^6;tRvmQ7~iZlKJmZ)z2!e2{)JEEMmdu;Yj%Y)_u^RGoZ#$;N- z0H6&V1Aq;jvf6)Q)uvVD{-Ra8R{3jJtw>q{yEr}ROiGqj1pRd4o_i>}9@D!Z*Geu( zFK*+7Tegf~cuj_-dlWsbaS?mk5ZAvOXRxOY9fi3mf}5HB;>q0ld1kGV*)J`XD}9&N zeq{E8a=E#YGr30CsY5?KQj+nQ_`tWxC4zTbZ7_o0__`F?d9?1{R%Yj7jLvmRUY0O~)1i#-!;3CLwJS`mkhar<=KiY~#)__xrsi8|d!z znYriOKPV)tmbc#JS$@y&dEVZ^2i9G$peADxo49DwiP*%In-sH%|5O@lk|Wln;g=>1 z&ap=<;*}4ZbW}zQV@)c4*raR1gC@Z)o@~;fyo%%|U6NN3v50#G3u#hsJEq6v#Emok zX(%>vNy}c3nZmE5^MA}|*#C$rta;e7w_6^X!U+#s_GQceLCb0%w5+!s6E`k4ac^pf zf%>XOTcPiAd0Y_tuAjQ}YhA7<@Mpsl1CQ%NGdzh4^wX#MLZ@fk4ScVtQ`Z;O)_dc`cRYq7f|C1@;s2+@qa^_{-s$Fa~ES~ z#ea_CUVGRn|7l|$k){~Cp_Jwn{plHtXDra)+4|~Meg0PU){AlYVe8iHt$KUvw<#C7 zW+i3cL-c%!OF9f7N_NN#WV`=UAeetk%})Ra`9A3|&^;MAm?KAiK80)m3RMhIMT`Px z9Pu$^_y8mp`&6Q>SL>wX(AIW>HY}1a`UdXek6$FTK(aaOEs%FNpQxXL`TGRB4Wd$8 zKp=#+P8f2sW#W%nCO-}#d;?YbK2=0Q1})o(yrf*!99R!|9;w@GuLFWB6ee0`G0IGq z&ICTzASf(wP=s4pqVH1{;-=h_86_4XC$U(zz3^fJO*wt6!2=vb++9m(Q644`cF6u@ zI1c`#%gR9-JMH({Gjw@y&k&Of>0)8;m8{aisk5gyPbp#ai)$xdrlD8`ljB; zv+z1vQ#^Scjr=+QJ9aY4T9&SbzxA4+(301=3G3!{7-D#xz!Y4mks*)uwXoj1Je0T=|i^=}P&eTPtjBPcZ$xYu!|w z!;S_OI*r*<2fuj-{<~?S#i2ClXFH>?vtqD`4YuZT-GOA4>hl;srN*T7NnJ)~Ty%u0 zsBZrp28`Yj_?kU5f0a0vFxO$LZ^LWWXkmIUC2y|pdX?&t>{*GC z`8Ad@m&l6kX}Vl-$aprLYS*W?|R$J zfIu;z$^_G*^T8j}6?AUzvcyXJyt8*ttSFBkJ~MOP*&FuN^Ue;Ivx3LN1@oG?VB@RQ zc-IbfdCyRuT}^!wuEocj_SHCc%pMn>I?=apIP}yB{6$-ye4#T$cTQ``38nn$Q-SU; z87Ciq9<*D^hx=;x*~`ap8jgJ>)z0$$H}xJIFV~0IyTu`vivI;=!3fTiI?}Z8fDk+B zSP$B@$3o~?I$c?jsI1AQc>>+{F0&=Cr&4EDYfiHdVHE2`Wan?eDE2HCcXD{7lj!FE z93;`-X{4$uH6*4UOmjNQYC#W)16Fm`c+Tvpm+qR1{2=ZK+eIaA27y-0-2Q5@ZGQvP z*|pZ4@`87`^Lg*wN)>egjija&CbOp4$ctUeZI$KJ9quA~h^6La zRU}I5rS3FerFbsGUQ(!+zBW4i>7u1(zaeBT8^|acOY5Flwm*YvIB4j$m+=|2x+k3t zW>>JmeHvAJo?RvEv#V{_)~ap$KMW{3EX5Yvzdhhl0_WoBr~aQ*HWoKqD7Fv@x*~BK z!XhOeU~}`OfXU*JB1TQVcq{$;G`rv2>Z$25SOzd}6Q!X1xhF$GpIOda7Arsob5+j! zOtG6PVxd(Q07=sniM{E{8iO?%A*GwPc_GDV%>gE#nL_QU1*L6awA0jOK5p2P-+-lM z_%>bZhfK`?bI`G+!OwgAW(ED3sF`=RWA-xY?Gww(Q-&MZz^+9B|$d}gJ1KCP&rfgkEG zbRT=-Gy@BRO4Xp(7lM3JqydX7V$`NcQBITJP=Kc2OV{vPLxub?O+kMhTAb()&z=|3 zT{yL(yhkyCS1RbK*`Om)B~8}E=+kJ9vqC(TuG>?XUDJlpidl>^^6CMjYuM- zrJF|ew8Axr_!qVrTAX6onuCxz7+DtPifCavH`OvnxSG*^?NxiD6@0MNXsip23E}Y-0TA zV%r-F8D%^h6-wBXzP0W_w=gIy;!gQ0xFfl%Ri5`hcv%QkY*1L~}*SU9+ z7^}sU&nr?G1(ju$TNyC8G*UmGxkCzX62nd?AOm=;t@upHSncmSh{a2(ow#DQ08evHHYY^F_(z$dt}zG;S7KbEN?A;c6+cGtx0z0yb?H z`-;RMq-0s6Cio^tKVa%-Yw}i{6w!yltwxkgmICj{lQU zXSBQtK+#b9W}4<5`Nwxmn)eORVmFp0ZXQ@t9)CKJ3j5+z%KR?<>6^tk4j;*0cw*-1 z%k?G26W$6xIjZU=JKie#Q#(rV; z_>I0cvuD6)9X9$~w}^*Vibph3SDnz6fN|9PFt(-!rph1RD1A%%0ezsXYm=H-&H zK+Xx>{_bjf`TLhkvT^Ll+aI16nsxm>0mnC&xv1vH4>0B_AD)VtS$2~XvV|vR7EE%Q zYIJ~-_w-1oacA<#nGCC5;E;9JG5vcM+s40n!F%DztL|g$=adE7RKACm z=b6|&?9l7P*3E2kA;hl*DsgZ(cS0WHosFm0T1kwogz~7?HMa!_Bt1<;;LvC4RPE*4k@v7OrQwq(5 zEOYiKTZ_a%rX*BJ0Z6fF(&1;sZfCSRrQw39`kK;C80g>?ni6yO=A0F*CTie4P0ra% zB_`@lw+TG&C48=h2^Lo}!IW!j%ai}uj>Dbq^77>2!#ft79op+zaQ5;}$AYsRD~DSY zK-bT$lv%4OCW}SX@=C1N6gJvXYC~*EX^7K-wm_{=8gi{8Dq4}tC`#xgJ>{@yV{+5N zYa!3mv92G+GvU;ToDJT~OorFOFx zEDKPEni$24Nmj~Xhkmu8b6i$Y(U4rmpERwOFK%C9o14lgQ<>M~#@I<>5w1ZJDG|4k zmJCg1?|IfbRk)r09j)0X1-FZ$OB9O4U}nvLN;8}mPHh+JY5o{P&2bbZMxTOB;L%8f z1}$$%5WnCZi)#Gl+5xk6%%ItCbRIM)#SXjJ<$&0K8|Sbv881V+g&UcEmy7A&vDkL! z%0)Pk`epw-8IZNc0Y+j&$sXM=0 zKfmX-1^VhEpLOf2dnRcO?ItRQqWBTmMYIHg-6GH$5ZHZ$oYmf9Cm3!CcTsr&rs)o1 znr0Jzmpz5XoP=q*i&3s(=~Xe)^s`qdOjAENH1AU``0&*I#gBU9gGL=XX98uAjntL0 z4SKofcly*G%Bd!LkI0NxI}yr;}7+vT+! z>riPO;J7$|A+%osp7%a=ngxhte{<-l-hXuc(FOXBqxLru*Y<$1JpqW^J8SgGA@**K z42g6D8vxZtH3^AK&66$@0~A(o*UT7t0CF)L)QgX0v--d)CC4(^l#hz0e)lXIAQ(nTFyHY;&JNZ<`GdZDb8 zylB7M4Zpaf|7CA`5V)1YFJndybaZ>rMPQcpAdo1>7(#zP!z2gIw9^9MQqvv;rNi+y z;MreOlxLLV@RSSPW=EZL2EbS?dC;FgRr$aBAP0##br!e?a2f=8#PK>%^8-`@^3N#8 z7FZkeN4kua$&nGGW)2Ks8DD(nTWAq!YFuIf56IL zGA4A*Bt0jDz|5jt127gfrlV52wXzW5D=YB_FT_^Kg>~*r;2UUES`A!F4VfdtN^-|` z0pSTvn~a-j$XE!o$Q|1S+);B-4l`(+OOCd;*EvCxZYOjY{ofxyaGZeDH~Yu>_22dn z^)JvT93So18;)C!A9(W6lxL}d^UA!$=zN*i5gAG=s+Ml075USPddx+`8AaoK(Ln=j zgDn@#)-R2gKN)?m8z}MQ?0b$^;M)D zgf1fWW!Mv>OBtG-(%p28KP{vcWzzacV2{vRKN6fKgtpvjFN$==OC1Rf*D@%nW2$&$ znsj_-&JX6}+ofKQc%ruK9pi~QsW0``scHD@*_GlsCt{YQE%%>w|7&Lo!&R}-4|lS+ z3ofj+4Za`@ep}-m6{m2ma|d1%&h2)oJO{-}wQzoSv06Bi*@kq6pPdpEu502s38FT!5F!EEEXu}o(R1joeaI!s>$S#GwbRe#tC*{%78A7DO1}fJgxg9Rl;F< z7*6;6QvcE~^MAQO@BiicU!F#Wgagfc!1V=wdBzySFDJ!MCfm6W_~oCApj($FMNq9Q zg1R=zBIuARTctlVNI7~qWRWZo^9f$<-k{gVc)6~!;Ld|OYf4z+_w<}Ea!6%mV0}j6MFk=+?&T< zf_F9$qE61t0$>@)Zc)$&kdmGBN6KEo8hqrrT^Vr7d`#ffa+|P`_ks88%@ zR^JG3YG^Zsbokl>@+t;5*i<&0-Z+|(GEVEp)3y6e!|m~c<4dG?*o{u29<0pOR^)`h zjj`-Mq3|{|^e=4(mDL(IhBlx2G{c|t4|Jb7Dxcf}Al8Vc8KHA1sv!@oTcnF5& zBkjz5q@BSHm=Cg1qqP@$#C`I*5HYMUigX^*OJXC&pjs+3ORjIdYzj4D;*PUpN0^!yNrf*XQYfdOdHB zK6HJ#UVZ=A^$l~9{`=YMN$wA?&q=BsyPniAejVo}{oND4OZp$_znhaJ9=fmZxnJ_T z`^q^Op8E zNpxX^Zz3J(P1D5SCNbcCDwg-t-JB)b6#qP#+P_YFvKDI zFGDwME;fFYJ|5g5h4f-*pOJSNipLB^;{dXlsm#sZXKiimwd}c-NZr~^WfJa=|4a94Z-J^Q+7DIp7DZLGDIj5qDMiTJ24AXl!{C@j^FCsp zkFNMpV@l>gO&C*w2gX#$P8us4Q$h&#qHA2X7ppN%T?7_qPMTjj0Yh%zkORA8;ed{(vQ+ zO!(w9R6;WiyjUw!QHOhBBN8sEP)q=ENq~}e3+uuLnca&6Cqbrtl_E1$#^=IgMOuB&#a4xnZyPjoBZ{6e|z%`!1x_{>f1EI`86D=!Pp*OlQ@4>SyWf zrIlsW>6UWpz>6xC{?!|lcC|d2dZ8TU$nrSs+`sL``5sQr0ol~8o_+}M{zEIgC>buQ zCRMtP$thdm!yw{6w8E!NTH&%g7@If)pu|pC;UPr6C#~>@)A8Xw?UU1S?9Xib|N32B z<3TdlU9d!`1Bkg2Gw*>NCFe{59Vemfa~64+&Ur8+lWQ$M&W^>X08H$In-6+)UvZ2c zePNpy)A9CGxApnAm)%YP=6RpiXMajHks<;)5y4!QC4Q7K)>0)_9n5gNowmO>PHg@s zL(I|<{{T`zy^6g^<1Msu=0jU6tUHqW(1OgWWR^xw z4@qhG0IoD)CRncM7k@tg_op=_n)?i;^&^qG$TZf8Yh;-;{9`g{6xOOtb?gZ|WE9Ml zy+guNC>jQ>=x0=H@E1UC)MiS9Mo+f*xjgvG6FnIGOQrlJw*XC`^$fq}76?1V( z9uk@VP9|h|hzk}jmIt3$zxs~ER8Vu+G3W2~>wjPU`)YMI{kuuau+c7Vo;B&!LjffG zn_iu4__sS;YAis74Dc?#I39`xopBr;H2Nx7u!t^Yncr76|wYpu~HMordpSH%2=@@avLQwNEXaDz-#t2GnAtl zcKCcT&LhY~osh{)J$UgS2lXetiMc6bFr zOTM~OPs+B8-g)9*^&NL!xC8v+PV*hT_Ft(?q$$J7-|drjfAR7lhp4LVIuLSb>_y|gR*hiOV$MT97_35gK(uxIW) z?=8qzeRdV&O*I!3A*_T5iceQqG;%_z6i=ijC*-u5KSR@HDryLrPgE{ z?-Y>K3j?r<4eAHh+fw4Wuzs}0J@pmuSfEmM#4;dKT`qq>;knQ!(7rDNf>M2vrs7C; zc7;!xMP6pj#LMW&%aCRK`Rtgqg{MOmr$Wj;U1s+1E{}L5U00m5x-cQ~1%Eq@6wt5} z=wg|-pl!Jvr(N$ZXoFS&Qc}*{4k8jid!H&)n~yYh`Vd1ECpd{jXfcM;n~1K|@b+wx z5pNs!wxv5URLHyE#i$?@0xJ;%Tx;8ZbEAzAsq?z z%M40Y?-lM%L3CDRuwo_DrgTRHEn z(5z7@W0AOp(Jp0jT;u~vQw@fER<;N8qtH^=C`Qb#s=^ZSR+?jtai4_ne9359)_y2l z3$c^mS!U~9#}jQU%;q=(qco{hGK_KwGUjz5YrI9l6`0?dO1rG)KTM@xvc6Ve&YVWy zv6?HV(QIacIXI0rWSY-RqwSg5@%ZtvM0#tcc}XJe%dBSfr+=8xXv1BIGRqpR=f^}_ z8+gaEXd3`iZjvk|i#9Ak%^U*URa>Q#$PAV)L7Lf#4b<~zs;tdBfl&^~v?+p73g14Y zm;SYG(aoLEEhp<@-f9-BJfzHqX+kw3DKF-$KD2psqhvw4;IGEQAR?ZfG1ew3dkBIWu@Jj~VLRB*!Dq_}I=} zW3RXmooOf^Q#?a8?ZBGKk)3SulsP!F5MCmZR;7FC!I@=#jDQ@2Ji63PszMxHXG08M zsPey5I(ipj+VR67h40`xi$EQkavDjXq@V^WU})Pz=HeoFDR_mOa27~N8ORgXh>h=t zJ#&bq+JaOj3b;hNOey)%z%wI(%4lG7w8ItcsEQof7de$2?bDB(ogE#@j1J9-UbaLp zXN`;$jC{5!db2X}#TMz_GwpZPx4zE575GPDyvH$p!duI1&l%|iQ1{iSh~Y6+q6JD1 zqkwzS4c|+y;X^7OCA&rQP~W1QDJRMblxUqf$JZ-V@mEZA)WlC3>J^J9Fh8NL^Zj zRAGT3S1CqGDpCFlxs4=f5jI(B3*q{ar?)Rfhk>y(PcEv$mN~#@0a2@Qec}!atB@7b z0t84D%M<19_L;i*%vIi0(jFfZIKRS{5BA7)peGfGm)IcTT$x7xR9bw=v;0Tt#AF6K zFo$@RMNEIodiR|5pqn}EAW=CyWywZ<)F^(aVkL29DIeNIcWz{&!74`DX<_I?5Wt|f zl*uQKTvqk8t`zbH6s?&f;rdcO+)SS=WzL{jOOG&x>D<${)b_LUi){zs7g8P_Db-P4 zrmjJ$C#*%H)(^*69GT#;Jx77n$x#CVst%nP?K7nmNG)VaL|XSoj_4vs@*}4|k=B1UHu*~;t$uS;TYRK- z+}P9u?u@*ce!blGoQ~GF{mVN^^l9bE0`m_~(D(iNzxO}LB43=C5W|NE4*@>5m!@Tx zyMegea&mE!gFk0ZT52`FGe7oI;RA2Hz+Ab2wiK9OUqCM|_#ATW$^!a@0<&@<-CR&$ z&Rs~i6`1Q5(tQQ^>CJ`o+y~Z3~*@W_4z%%tdRV-KDNSpgj^y?;Ap1%p3vfTC6Cs77Ay1V*9!Fh#Y^&OeaGUL^YPQ^#c$%vQ-vSr)4#)S#X& z7ru@!%L>OBwB3iFrLixjNX3Q4Zxu>By5}eY|#^(+gT2msy zISu2++=Hf_*9=GWk^b2YZy0mmG41@paDHawjP=&psSW?m=N>ZbyqK}`AAof!iS6>+ z6}GH42Mb>CA!J|Y{**5NDIKOPNClXWl6uv=neKZT^+;p&&RUFhm<`ZJ|BWvBt-hpV zeMbUYul(Ia?66iNGBu4D`U!^I)WrZg>?}l@pAv`QkCNp)^sKFC2BUmU&MCvRh@pt2 zDxr};g4OZR2AMv13iG8kvDB5L=i=?D!I#UqHhIWHKk*9^s9rWd_$ ztS}zgC-tc#Cn`iWzWu@A`T=2t$E8!%4Sz6re&A6XY!IxJfoI)=<$T`%Dzz2(cXO>h zCsMiA->=u&+A8X`ww}fdt#t6%c`>JJ=5ER#%tJ{l(kd~{L5j=}^w6+FAN|g-!*AHp zW@vRv;R-2GIU=MAVt&m*11eJ4_nW|%JnR!wud$vlX(jC-CRr78=5`)?uIo9k|5Fdw zTJ$TgZTN$Hb?L#8X06aY^;nqpy?JhnT{yAk*8=1GStn8}#x51V5yF3i*+*Lz=nmf4 z73RKLDdN+mERsRH|HfR4kN=-(zRr#*393}?5L?1h6>}kiTR{I3yE0sL;(7B&X5UU4 zX(h1~aj@o`h?09aj--?4s#GMMT=)Qf%znyAH2WZ+W9jUOe}5gVf1%`u zb(p$8EqQu91V_np>*<{+pjUGCf9ox)-(OE>)A~CllvNEM6g99+I!AOUJ(E}OG|G}( zs9==lrVvf7*%L>Km7#Qw7&2LPQcJva!dOu)hJ4Z1MpOxt493m3!uY;Aa@dY0qhg04 zdDPfiErttb@LEEmb1+}G7uwpS3ift_nrrBWn}^aDK}avUn(Z@uaI$q zu%X&ipUdoP)&4p4Z zttz)&Nx!ocFL%=1zm%q0XxdOOPyIeX;cH{robyK*da60;@uVbO3aOH5o}H96$DA~8 zL6Rd6UzaXVDq3YuDqEMdsUnQ;&%c;dyThE+@JiBd<S|R2w299HmP3fw=xX9? zD#S?Id;Hlnb_UcHTFEo3nXjH;I!vifg^sov?S&aI1<0SBC|1Z)huCK2&&|2h=~&59{9TqB-INxtr4}fGGFF6;7)xqk zg9{=kE<#lNzk>Kc(zjfu;a&wo2ree@SuDc}wq(-0z4-~J*_gefHI)?E$S9Gd#K2k` zwT7v{yQZ{d_5uiVa1lUHn|wyHr%|)`B(40W8%#pyf>r} zoO}7bK^<&)2Ja2>Z7M@mf@Sn*&qXO`igC@zSNy%SmMLf?@%Bi^0f3#j!SGt#04U0; zX868;dHH(^XV#Bhp7-!_((gL1bq6j#q)V8Rz$AbG>;VHIUFR8zQtB$GM`Qr>gE#^H zfgjyRepQ>nIG0#8G&hiZGVYhkY`IR3#?>UH1QTA`&8Ki8tN7cz8!esrfIj7F}u zm>kH9;GE=VtZoY{j+ELeog8`vd1u9Ot@eZ7(qU1r_KtS6 zC_G1R2sm`M(7r$ASOgVzQ$W3zoQKo@JnhUAM+~0koF4vDJV*>bBegp5B~%2>(p#9A ziDw;7AgMzUX`_41HRK`I2))ua@0xh7)pPW<((x++>d4+|wfA64oJHWSgK~tKh+GDP zi!9uVM&ShDd?Jd@#zavv%RNz|KRvblALy_?eWJn}WSnd;W1iL3d4SQ%O$?a3P1Yvk z&ceLtP2(-|H_(U%ECT?ISO(!uaxAEOqr2X}-o1Js*Q(A}vHx^HlTZIcj3EzK2(A;{ zv2%|We@1qPE|pB^AAit|zkbllhYwokUcCzsf+UDlrjune?)dP5azu@C77?C$Y@%pl zOa0MlQpj@I>TE`jDVh7|qSVz&QRBVz{8`2=g`_y&gGGgmpvhIa!R-%j0-G0Ta4A(% zN65x#a?YNKbM7QvR3Ac~(4X~%>p@>kR@J#WgRDF`nar+j@QKgF#b{pNLdv0vFIIJv zo>QF$BpGj+ls|&mnkx?S4&E{qY_gc(xpE48C#VK2Lhzmm;MBg&+l+K-B)E~<5^gb! zHHb2rAVEG0oD;=sXB9Mp<1(@6d~)aYq*WL_CCH!BEQ(?&2+nA@ND8Hhp#&K#9x%72 zh~YgbUpolq3VKre@v}C-jQx80=64!hgqOLkusmu5GO=+|Ur*<~l1(l83 zn^&87YvIK6VuRI_UMxQ^O#>?TrfAqDqCRdQUJTWf=M@k0MWaX>(%x8+xED{$eRG-Z z#zuZGo|c=!a(g-T=u%ZAHvubqZ-KsgLH`%D`Sma8&M)ZSm>>H+O|_x`;JgT1W&|RD zTzmo5g!JDoxcz%N0VdT&_5e$zW<&1ez>(DGkZce!iz|`ibRJCVqRnM{C4r>2g)EZj zfI_x_T~1IPFx{-2+PafF*Rn>{sz!E95C=ur;%}itnelkjpFU$&{*k7_G^rlk$iqD% zQdn4TE70G0=E@(jScug^z!g|6%Mx?{NRz~JnUFnCg66kF^Al4?4UPh)A%QuBWj1r% zR646!RRRcD<%F%WEjnoY*6@+xgY+*9U!;GZ9)c2rp`?$8UA0S-oEQxnju=iEEb-z; zJPP)PrikKhuo$3zv!b1zhNH$KwGD3@57#wZFdo^_aLst6zTrz#*Up+Z2$T#2EC^F@ z-|!0Ch3|iosK1ySyhmrpH*1=itFZbB3gdA~bWNl2!RrAuswEXcZBZek%UD-g8ZTWo z)UCFm;x37J4=%Iyv@f# z;95Rqtjt#M&Nlb8fJbZlq%ZJPNdL1^J9P;EezkqlJkrAaoR}EvZ2FSL!TW%W00JEQ zyX1FibMCuz+v056yyQP(R|IaycE{Dz4JbdsRN;v8P|&Mw;g@hdJZLlb?` zyUsQ{A0#0t28EE{H|+Bjj$9mk75F9`3w=$?43&G>ENwT4i?8Wy0H_#JJBVMp+j z7U1!9ZrK9d%|VFzFhie~q_mN=Q+!r}v7~TL&aPghW@3^BpJDnxTjy?S=2QtB94=j^ z8a}-->t4S(YE%RDw;Sbz%iXbr%iS_O?eK5&R`_2neRy`?pPvmaP0}+rO`QD#&VIS{ z7qPU`98Wu(CL~?%Yv8llm=`}?%-UGv@ z&+s5U_DY$}vxn;*eARmZ_Dk&aoY?8osYg$rFbLP$Kxhu1f5l5>7QNJuf>{`>R7)H6+b}`{1n`EY{6F}d3s?3ZC6mQjxd~O!2#kSQB5Agw4xwPi~Yi{J`X z1nXOR8Wgg=G+&-EyHJmL+bCxWpIJ@@WACo(MAs6YmQ1kec#5INMf)!ptD zI)qoevC9`gtHoZxhszVHG)Of=>33H#@-ylp!DpnPv#iJ1JeCG0n;q%cAi7-b;=P!HAZY@;L#!iAhu+5nfueP5D~OA z@$ga`?9%6g^h6bZ6i0=AaD!M$z(=HdEKWRxJZ`L}c)JgHK1m-5nd_>=TN!j2u;h%8 zC(>GyGj1g2gNy0-;Mqj~l_iOk9eEM9GE0sw2QIk+5_~e(?ugNuBHn=5r3y+a5+e&_ z$yz5%R$YP^=T8qdiD_bs_FgbIXCNbczj4;vhE6P0T}H7^o|4NG>q?kl-CL-5lEl|J z72&#%6WzTVgx>Hv@4&et_WZ15u4~rt%K~?ZzDik~a(qOVxD2d(1-(|Fo<}weDc*(H zJ0KGUoure$8YjLU;JW{N42jK|_{&Vx-#kQP0cn#Nc!mR{*HyKQqL!AznY6N2p|0Jd zKzLkRJBw8%6;bwN;z0Hsfm)b2Q6Zgs(%Zg4X#Z}l4Mmqa!di|y5O;?dzS>5TdN8iQ zshopRI23T>6r6)qJCfOtzFAL_aAWryI|6zA;C^8{d7_#;v6e%fuorA4DE}Ep(uMAI zLU3#2#5hRqGDz-Apf!k~$~{iq%GPj9H@L-iZm3>@uo} zOV?9q8+?NAEfac0E6Zha+RUCBZ*h;ew3)rAL_J;$41gS57xCVTn9mrs5dAu%7P>tJ z^?C-U^C@u(HicEE441hFw+cgnEbe?ulgcCK?$?=uTs_a!F^W1ma@CBX6ex6s4>27p zYNw&(fEHN2(mFwr8`!bKBgSDwPU+A18TZq92S-Pjph`_d`P< z6I)TOpvl|%*V|V4Yur2hUT=x|07GS_Iswzl0{n>i?1b#MXGSQ|1o;XO76mur6p_2r zy~EQLsyJ31H;X-aYg_4XM@^}}OywEwAjy-(`L4u~r*Id8_{vE4gZsG1ebQeQZfw)~!&(t}58N=G-Sd0G09*l0(R#>eR@p8A2x0my}M6%#h0VLMtNY)Aden^T4D zXo9ePj<)lwDG4*Hr(IN^lsjcX1ooBODKNdzDbylATbn56nLIkNGNpIOOiLqtTR2_{ zrb;aZQpcvqlrJg7j}C7skI7gvJMFE6&DmX3tHX#eJmx@+IMF@fx-Jj*zPL_T&$@FyS{_XSuvE zV4XWMOyJXg2qv*UhTf0$G4wv}c3qP_ zC7+`bc4|m&O}n8O27s^boT3&T?A%OGr`O+7u$X< zRe_tPh=v|_4@grK=d#8U-Q#DPShvTDa=dS-h0T`OqA2rou>ynF9)X zoj^^FKAc>6^ebYcPn>n134t3Q6F9QWEj-CLGmi!>Q8FRR3WqgE45ZPbV6K!61@W$- zb$3~txnMLcIJb;ADi|&meffK;AzZa5RU`Jh83ci&dc^cF`;0q$f6y} z`?@kg`LD5O)=a49m{I_YC!aHc;;|E7yJlgVvRS8R>4#^P%(|#V#ei7#8aWOF9Rh7( zjQx#N)h2F+g5HRU9y<#Uo}QS<5Ub%=(Ep^&jjhm5O5ezTMo%TpmJwkO9E%f%VqRTD zgJGt~l%<3x7hIkh^$GQwdXW2*vH!&U97~NOg122|6b>bLBPe3+rzDSpLQ>?`vdQO`c5O%*KS zNj%0}ISd+`4_kHgKFK$2Rs@UpC^{=M75%fP+ddYa#O57B?-%Rc1K*Uo-v)Q_^+>7v z;q1xB;q2eYulzJ{;RlVdu(S)UIEmMN8eO51&xUz#u z(2I5)iodA(jsB-dn3ivgWj%RYJF7)^X=+J%iJ-A1z1z%|#lbmMO}5g-MqXs;B2HU} z4x}`YCWSart*Jrs@Cj_LrG1uBJkCRi^gbzzuD*qw_E|jl@Jom)H`y2JE>Pd;J#n(5 z(g-%qAiVWPM$t%1U!>XEpA;xO-dd!U?;1+)&QO*mi&vE}4CM)LMIZ!I9EFcE(XD?U zUmt&rdoa8VdL4Wv1&y;HH2=KUE%NYIRB02V^F+aDDT=^pPS;gMFJUTL2A3udKF+VQ zDuiU6f?CC@S6NZ9qKZ|n;h@!#M zkRpD{TQ^fq=wC?q8|A{?aG5|AaN1oMl9&R1Nx0YT6=;+z8x}@D7<}{Y1~Ae!+1wrE z7QhXQz^#|sO@}j-Vy|H@ugYZ<#1MYcw#BJX!fLC3#k(aQCZ4X2oLggwL`=tV?jX)p zBY~;+F+O*dB51+M)vOxE>{mXiCv)hdeGG6xXkLSn)2D6=k}F}boMf>km^ZkU{N#n4KW?a=g~T6YF^=t}0D z#H5)awH7xFWO#-Fr8)1S$jIZ2VvizvWQNUuI9Z|G!>adKfjiZ*;nd+)>RbXctoC=* zwJOxtfxS zvSTVzFHaQP?bLPdIwWB{B;kS_OQEY!SB4m;8r6}~H0%WlhEiK_Fr@-^-ZGTN+0OIaL#*Xi`MZKL(6lpqe;s(_HTJXbZ)n z)}A9ljfn}!ZDm|x$vs*;o|ceLO-{?6CvAi4guzeOxd)#YhFa=5)hev0Rr?m|el6s$ z(z;{i0npHzBAV|uJL@7*NNXh=zb2w!`9rE>#DOCzYjv0c(RNG$4n7TB0n&O*fjX?` z9ccF7K81^&qD=a&Os52X7PlzIe{v z`;#R-z2{#;uIVJ(F~tKs)WZb2m)V3QXk#Y=1wi8<*B~|MLMyF&T%hu&+@XKfJ&`jj z$SIF8MQmRHJz?sP6v{}WXBJdZsz;)wqxQ*aP7 zjZ@HZaQpIEE{@a2VG_n+62|2%L=MHpxa-P#Wi#2HLuJ^3s$HT5#5;9zl%v@l%+Sf@ z?!hE}hgQ+K5~7KEg*G(v;NU25M}5e2$n+ajx0Ja%9#frbP=XajdlZ3_Nw#c`(wD%p znD+?!;!6;n573ur3qfB}_8aHK&=()j7s}qdG_e@iOXmBFZM~24#ZJ&P|1`tfyH4nB zS?3;zq_F3-nOs+D+baTha~aYM0?XQ#={?IV%aCTUZ1FOE$+Gp!>Zf04Qt4QEV5`Zm zBmlIPQCJnyNFp|g6WSvi-On7tqDm$ZO50&TC;B~&@MS!n2)rh3MXQ5lQ0Cfp@;$1G7N!^tdrHWbq?G4;Wl?; zHI!Or{Ewo~5)CX#OQPfieU6!{d)e+AFL-;Nr{EWx1x zKtwtp01);}NeLiB_H_IJP7{fR(jJ=0c7MOkJNzQoy8Bfjyu%07hjb$x|K_wuC{I4(vf=(N;r`MQRjgOW`F^Bh;$+sR(l<)i1M){_FRa|)1 z!4Poj6wnTU%1+?aY2pXQ9^o&LYBhmlu{H4xm}?t__9Ii+bMU>6XtsH$4*#SS6j(WG z>C;BLNYoMn@H{qaOl(d}z}Q-$7z2jGX@@havfx1GMMvn`W_)nbEWq;)#8d#D2TDuZ zPOUAahFh}}5^seJT5IH_;Y6DMQ{(q$O8P1z&TrPX8H&Kpa74pU4X_@Hhq<^>)9Uf` zu9;%HI@0bad>b1@b>v37cSPD3N$FB&^9X;ha}oHS;t3zp`<>$B(cVoBZ}6Tspz|AV zplFnq`7WG`jE`gu)0ui;Axm$02%=CWt% zk<0l1UfO6IXwh=6H{oTUt>51ug#NL+SZy1qAoZpC;CVPd>2_&_Pit!}-c9eUP##lO zBl*$eNgT-$J51V?!m7wf`se0?Hf)Z7%oaft4H2WkNn?ZR%Ms8nve}X7M)&JZrGEIW z%Wvh!9iXut^;_d_nN3A8BTQ%NGBn9oATbYoxOVJJh6*YP41|ZTLWNDCy9^0=IS2x1 zoita$bbK4jsKPlF*mxToRm+hymuU}1Md?x~T#VSY!X|s6^WcSIxq|NJOH~=NEcY%W zH)lGyn0nrFX<1@*7V=|!ixb;gi%_L8i;a$~w?P#Q&fo^`Z7uf;t7a_-P05FUxRT0^ zt!$mx$M#B1N-!{7#f$Joa5sn@@lSvN=w5` zIEO5Qq6FZ{3k#ivapGmeG~SYNgh%0D3+#=iF@%w@edHFFYvR;Rez&*xCqm!(*Ggl% zM;54IcvMflgRMU0SOiI$Bg%{rDT(ly2PP#V42bNKg0shHD%t6TpalSS5_k*M5TCQB ztiEtg^gF`e$YlCN!eGe*YlK9C;*brolRssEzJnXxr%4D^CX1Pp?YCI5 zpT`;Kz#w27#3OGbkAdtO9cL;4g_c};1J(zaS=d+saePosMo=KYT6^yX#$3p78j7j` z4X7_Yo0yPKy4J}EO@8zwvK4VW1-8~i9N5kxwHvYt_7v(k}mfHn{toCgn?U@U5uu2!KjmDsFX znqTI^EHR^uZ{-?%kSiTzLr**>uZhr3hO1yv+>7o1rp7z`92P}b`ujwC8Yv$}_=)LL*{pC(OdLCW%lM z25dTPw`SWWD4L(VuPK>wouRVp9FV#Vy0VIfs!pkI;qkze%N^|q!0uC?h!Z_HjLsDu)cfpR`r3Kv~=@lj-!;0$tu5mh>-2Cy+T zADm*+Dc$MXdhw>wxz9L^<_fzbp)7oA$u7g54ncQ%1SnJcB2=&KJ zYWDVar04oK4R5gZSk~HxQ+Be!(;t-Cgejcbf8#~>aEc4T{+6s7QTYM`|_oSlU9$;5+A9mBF`L>z(EA2ma@k;Jgzl14Xqiq2=F2ji>w%9sf8I zTyR4F-E7L~iWSabXSm2R)G~n;GEaR4n4FZw0yZD&Qz{#rbSz(w_JDBTw8H~Ty}=Ip zg{!c(FsrZt=}_6cMc0riT{h`v(RKo*A6+Kbz1mnhSI@E_>s4*D&0WnYt5n*mpLpjc zs8soh`BP3~E$;o1yX}4CZXR;C3x$(++x6gX{;jsbSB0ThRo{uzh{s2KL-Ac~7@Bp|CT*8{b+Ikke= zPl5Eq1}Xi7xq5GzpNB0yTbwXgM?&>wV;Mc|DPl*q)U6+hY!ZpQwp=Pq%syRcyHv(! z`!~4vcV@DmfBT$we{d#u%6@d4cYk=3>V&oJ<^jyRj)jdEd6ZDv)dK)7le$E{Ln zSAjlEk*&ld3sCXB-Q4zp`Dq5Sn-OH=wX(q zr_@LFuNDlH z1EEM!3Rg`4^7!b)y{==^HfRFmwKV}OwKoHzbLJkcot+&LCR$qzpo7*9#@nE^gYi~uog!8}*s+7Q z+G58UtF0Zhm-n|4==3nJZ_k;}Ip_br|AU{;mzbS>U3=}d*Lv3Pd7g4k90SuuO!9-S zP`GW^hsI#e*WQFbJr648_0Y?xq7XgNl^U zSy41zOWjU1%UO)H3x@P8oKIHI3)NkSW*C~)(?FeZ=PS4?&Q*G@A+I!zYaUwXLnkB&O8KW?~=>A9%94RPDPjs^w=J)M#t?Gmo65EVRvC`pDpNfO_o-p{-;$C zo0{i6Z3ZHcNZam}x6NQ{JxDQ#iI(GY&BU(OkRbk&pNs)8$%hoJwG+iOvx-JIVgDi2 zF3gpGHrISX9wwv8IvIpUsL(d2^Ilfps+D%?_$)rHUz@T`4OdM~VNrS1jbmE`FpZu45yLB$ge{72K_n7`5By;LpYn zdF0{CE=!m5RxPFu)XNjQ4{2laeYZ4gT{BbdI-H!tY)H{AZVvXwhTf$P2 zy~#>DtlRFX=By&#YOfUuTX6&yk6J2NDf7tfVQxsPopowVh3U!tC4Ai7Kn zL&T;BQq#(73pGaNr8e!Z_@i2dCS(;qMRmzJmUk?~UFsbpFN55mcRE}4#~efNe6IIs zGINWwiNA2;wX*hOo;qVyNDHW>9oA_dd+de(@p0!D%AlY(_f!_FVHj&PUA$r!nH$V#Vw`X6|gp5>7lDbzt_LXQ~fQ zlSpPur*-!39w{w2I89p6x)ZL4XEN$(Q>U|Dz}49iB(tY+oKv8`{j8o^=Oj6T!wya( ze|Ja)J494;K)s;p(U>%fcx%n2kK%7=KaUS>)#Y{S5E#e>M?*!|7X3DK*zvJZn1Iq6 zEuX!L-ePSZZ6?=g&oOL^3|{A4`RoG)^Xwf(d3f%VCGgyC6{g8Ar5485$ozX^!&axV zHg!cZ_o3Fv=Jt+~r{vM@>!TW)l;^WT87&?o=WZ6GENr^xppopM9!PEO;v~%k9fP% zwOX%~AG zW2&#U+31G;qob=^7tNw2p6RS-j}&P%ahE)cLPXBnd*EMTVx*pyD8?=8TvBkL<;j9; z+~NYyBAeKC+x29@`7_UPmlL=1)aAOX^|UQ!1m!u)RFIdCO_Om+cj+>ltSPg{;ZM89 zJ6i@MzqGU5hE(a?sqk1>djRNY}mc zx*hix{AD`L)QP&!)rvkW!#ipL*L6IEIlIWnTq#4K)+f1B=W4{3zf2cfx-jL@buLlz zaoMxgo^xqZ?s8c@W$N6_(VVIezPlURvYfR3{pS_br!7)N(`M;krjx(atYRBFAex?7 zlg1dIUUTW=_?y}<;$17dogu#ZFtWTK*Cz?354A~YWF_~vNkxZ!%a{hs+H%gV?1AQp zWUUpdm7R64YcNWhR*JlfNyI3rQi1W(z;8axK@a_nWRiTHN)t0`m)cen zn!L|J)Pyb!Nu^N?^Oz#U2j`4f(hc2%?%_Qwktsk#5LiK>l`6emqA0c@mI*;8T)>~w z8Mp|Js$dj#$dz%BXa!7BB)oHimG2frv0K%WO4xD){AG=S8-wSUQE*G4rP}i(OVk{) zA^|ISgg9jdY(W-nV!*((H^)GX7bdui2uz5XJj0-iWHphx$NPj~uwn#9pGqx;xJm@z znjWz8!Hb{T0_#GNHk2i!`=js!M6e_)BO#_eywrnR$#4h}aJ zqRqRpGep`-XCx$wwM;BNiwQgU(-OHND}rs#hZUf3!qFmA3{d_t$(WN0?7~V8Y!z)j zh65whrIisQfRYs{`lw@2RwTkEu5W|f5>f0h8urhxCZ2QM<^ts3+Ucz}xA7PpBqI9X zp-`1x^pP&|>TmLelysE{Tau*4fo-dT+ZG14^)EFCw=D>6i!_OcLU)j)yN3jw0@WEo zn&=?H-cfs@QAmVDJRtUj!2n116$JL+dwlTdcA?58>=&JsUO?=|@yUZ!|iOs1PUpY3~e~B4535A z11lYVG_ca)CkIz*Bhjfd^2n9py6Pl9lc*jL?_qS2M^>p!;>F^xg;@N+h-)KMO9eDi zOSX!4LJl0r1&vEqlFk~6{4N)L6k)}XVolO2RqcV412T_9CVhC4lw5?;@5B^Fv^FdgP-mV1=rnhVT9HB-)@ znhEoGDFLNS1}%ue13=<)YAkpl0!kV30O+-OEWE&J8I7nEQZZ&_`K@F!K}s|tlt~JA z@zmVHTKK$61_Vs0^QltFK~X+@E}^kiYHJb;OW@Pa;B1tEw#R`fSM=oz#8kk2wMd&7 zT9~DQrvimbqUj=$*M&7OzYYys-E&k>S$#k6(zHNGj`^zk83ssdpoa>Iv0%H!$waWo zyF$*-z;ki%#0V_fu}9Uu=g^*OvJ1jDRTuXJjJpOO8mz#t9JE(isGOKbErPd_1jXrs zHG528VrkF3YNFcPV>Vkc;X5-Ru&`)zt%#(!SuI*6qEmwNSlMs`5mFTi7$r_BPxBpz zpOoKG$JNiq28}YGhBKlsonvou#%h6}4 zEx4QqyD^F%T)Z#fVn9>JFsp31M7*{iA_^PG1~7>gP}nFRRJKxN6ou4{%1-Kn0QEO2 zjZEcvTi88pMFn?6dlq)@@D;3L3hcYEzq^+q>>Vwb&IApX1|RfnfkMSaP=Rx}59JI` zG5Q|Xz(|`4*~W5?h7289lTJd+Mb4!g_UqueWH3@FF9PQx`|ey|pXh`(E^w7Fx_oyz zg&eJl3(k_<@AHaK>x==t61rx|h)6^>xZjUr2`qhxk?tlYR8lJU`|d9HDU^VJVP!yo1PI>$QwAg=YWeT>OR@?qu8@41JcGEU4o^M zZDErFPx~yCL|}#H$JkjJB*md(R)$ys8=)mj0^2jEPEf*64y{vK+jMy*)(*VmI+{?Y zaqL8~KC?!wCsMCnD5(dM%;8Ai+Co64#+tvWvvwc zeucUsn@?13^_`)Dw_BP5M==Ctl+ps|2<-K^MhFS)&A271xuNai3nQzLKpu_$z>Sd% z-k4%k67$d-gP0?olic|xQ4pm3{dUi1D;A)2K+z!F9Vwd4Y(}7H zLIW2|YQzFIG$Bwlp|(KL*pemiJcEa&SIvw{M}11`$dQL(_25Z|*&r-7a}K<+x>1z` zQk0G~QKAU5NfcC65;V#a3ynE4?@`3$?j{DBDE>V*p_G#L&X98vEGNb0X%KNi$H!e< zL2;zID^^RJHiwsvs6!SiDx@+E)@}sgwWR0Npf!r}`&owXfOkM3@L{6pCV5K7utkaV ztq2;^6Vf6CGYFf@W-TFZ?vkk^KNxtXGyn0KzH1{x9Oco-V0tZC5Re+9+hRnJ>9~?W zYKfK{LkR**LIX607W{I^Dq;V)3T4bAtp?deLtGd_AV3wKfc#4sx!l7h2b-A9h2~^L z3jJDo0bX^m0x9#LJD6B#B4LDA)c8gGVrVR}9X#3_(4&>JbpzWiFxO$0k~#)eNs%@y zs5!>TLE=mbqnNyc6h*ZIn&V=kIsOAe(;%4(UoX+;7G~tIki71mMjG$9NW^At!0WD( z2v|g@$j7Eu6M;z)ElyEYjc$p=OSL_+DpIv+^aBwHhWo~;1FAjyAJ`ug5+mI)LUrhO zP=|{H>Tu=v)Zwa5HoZq}?bBM;#;t1%Z)+~gxgE#wp?BhPU(>DY8sGNb%A6fK#;bv} zET9g5#Bk^AOp&wwD3X5=b@Kb$fmWqefGxU16h)j;`LBiPl4>v zs)dw2GazN>js3c!4XkyWCi=E^UE8X*-T66pw2U_vl6osdZ+%k@pPmhc5hIdqy%kaL z>9J+>(eyAz`p!i&=g->qjQNjy7fP$wJ1q+CTvWe9U^+P|O}=BlDs6vh`y|!n-#LD# zI<#-7uG`;0blv69b#p;o_v#b6o*}yK{SO;nZjpVb>*n+6W2W|d;DEQFdaWZ=Y}wZQ zLcxAt19iL%y6zp)O{llG{*Ao*z2HllczXq2(udTllj;k5uZh+Rsc0hDhR8ZrP;T)Z zjnl8zu(yJG?Nvd&woX7ilewveDCo7N*?|@d9K^`n~ibX1{LAjl<)Pr`3!6ZFC)w~t;M zn!q1XOA$eU*3$?z1A}dvwn*COf=C@sLbOhMNfek{Q))vo4NiKAhe%f{ATZd0ff|vF zr}{`3^}m-1lB5w24`+H8V%-04T|5T$_sFjPy~=y>c)skQShe)nVAaKQHc)k~Cp1Op zW35+pAqUhOkJ#Fd570;y9tw! z@5O!;_oe!V7N)wSP$@%w|JXzPA|==aGYs-{v;tdY=n3j23ygf~7C6iwi6 zNuYvvSgc*^pZX;N;>s`nie_o#k*#)-clEDOXU zFcLj^dMZ1IC4I9R+CPdW!$4x|D%RHJ-VpNsc-Z2}0DoF_+ZeXEjuxY# zGGB5_)psPIFV95un_k@9Oh{7&e&k;eX429aIMs$g`+-LmE=dqtYf8i0ZZHgS`=z63 z-{vvqaS`UWxm?@k`G#@fP^1!XzjSn_vnn{uZTOlgCLLjV9x+4SNu-~L7Z^@5sxKI- zt|VQ4X(D>~wIROih|U}m&7WcI_@75@YGoCyEFe+#xtFc*s4X6plOmvP5s6jwB}XwW zR54POim|kB&KKMIHm{VNof-3BOY~%Fb*r#O&ZnVRnl%}AwnAgd^LE50AtH+AQmhgA z0n@x1-jP%e0hQX=iP^IVKbPj^LPoI(9BPv19@g^=%_W?;cV7654H5Ig*B=`_FPwu{ zfTt;e*;SUn9A1T}O6cFsB?!eOy@9D7bW@8HMG|<9oEc+o zJsWA>7D4ZoB?a%=e8cK=#%Zl$nxJ&rB~ziiNf-f}ww7pmG10$oDskUImZ8^sE~_@Z zZhSq4M21d&P5ruR>T3_YK1ntG_59c0q!idF4ELKuO0}?nuDB87r0nXOTU)qQgzohNZ&i?o@@^T^Cfz&ogj z-h4U2psNjI4(}6gk|&2G3w5U>;i#X07YRglkpC-c3zNL(G$t}Z2}vE=Y6lwmJcRlY zOO-0IQ0HtHQufPqhWv)18~K21eHV4`u*49c6&twJmgrv{b>VNy_;m+`1}ZCBNhV5X=JAK(LOg2J_bPq_K3jFBb|{5*LuORd zs%^0H?z~Z~v}>9?>(7|Z@0!PEwLWI(dYtRJ`8bk^Pmmn0OM0+nEKxWGL&BM~3KRTo zh~aF{G(*6@yPTz`$%6rCE%>#2pB4=-29md?8JuI8NxB1LnaR2j$1-=uGS|X3F&Bsw znY0&5tuYOanQ%p-fP}ig7<}R7GH1~e6(h`8;H8HiCf!*f}a%WTY9!apC!VB ze)C~-BQ$CiP_r{t(6K?`T%=v4xsvT3v7`dfsNKa@j6$CAd}+`Y6Qkh{nGfPbsn zenk^v$3Vb2KDb^>O>n*NzN~cDWIhf|x1p zCvTR(`Q?YN55YX+ge0VVLCjK3i-sS;YY=F?rV>pK{(l1^qoxXP%dFG`Y8~Gkzi*b@jPqZ?+jHG>~|L<=oOV;nLzHWBQ`o2 z{#(u|nCgdqTw05vq-^7_68nn_)`nA133@jPklvepcGOvB6SKpVu65+NMYkmme(O;7txG% zKfrH}*N5d`W`YP(TI)@`qbPMnk^{^LZr$9-g6p{ePD_|cBp zp;D&%i%@3oge38o(xud^ElZjlBi`Lh)r+$T@u$X9rcpSm7QB@3sqyov@%IW zX-e?_!X=FDz<7d^rB(4pgt$?U5Nx|J()YCv)S``xz0(Ja52!V>9G10x@ zP=cP@y6_#R(1ZnP95&#Ernh%3G;*I~3z4x^u@*s6d#YO9BIEllQKlxx$k#7B87U4& z{@<#w20ro=OjPSr2%*}~Z9L}^o3MdXYImnF6@9N|uW* zo~;xKmot~#YZ$lnjb{qhwd709o7yn1M|HYNDuZrQ`XtRPOg7}(V_RKD-jQD3syn`@ zT$9_Ww)Vuj$MIVx^RhSM4nu#Htofr(|5co2eVo9%xw7!Q)^?kX-WVr45NCZmR{yEm zdWTJWG46;d^$m2J4~@i7Ay$yvF+;w}jtT_%;<-BJ)_aLa_VCVg+}>r|IqGtZOHSr9ODw$zH#Btf#%#a?#!ITH12ZDTDQ>ja(%uLUWp%^YPet7c|F7}x>Zq17TD9A zBKNQNA`M+9g*p5#G*W`WgdUF35cUZ+AnxOegr{5H3*%5aJ zng!)~bxRe$b&7wd%D)$zLz6{^sTr)oV^ZU(k0%CFS<%4`4d}8z*Yhft^NN%oLZ<^lAhC9M~FaEIZUw&^D(Vb=cUJ13by(+9Ht|Ju z&yi$K|7Z5_a{kn^plpsm5^KyxoM_|rxOhnDzKS=oMcibOV{$u@L2rIYe${b%>by{H zGQ&^aFwgvH(|q%9?`6dH$2o5DwsOO#PLufbvYscnk7nD%H)~qU4R+P-a>GW))6|`P zGm(YRdfp|tmH9F!yp?~aLG4(U`0Gh%Bx5d?LxA+)lh!rGCt>{?CQC!Yzbv|JYx<97-vXC*W?iwFwD3t z$Rld3EgESQI*sqK@5NHyQ*j^0I>+-)J?}_JZH;SM1OJNpM6WB^=bYkAI3K%ZT)T=86?!F7!ng?V51FA+#KH)C(>Bd%}#|*2;Dl zV_e_j5YyAn2z0eaMYU%H2ay%z5#8Z4f^|iVZhH}gQc$va@AEmdvqKPyPspE&g%KQY zeHggsj{`F_3Y}41lzfSXmi~))6_gOjxBPNWP?g>@ zAFA|5=>wOkXt6Z94?6nBFruUPTzbwhIiUSBX=OcELO`tVdc=Ui<3n#P{7&qB z16@ycKod=5Z8L^Wa>-66os@=FF;vEKz5K>~ymb{?e?%sa zPwR;b*}%%S;f=2mn20Sr7KdLdF*<@0h`^LN@a*7-3e46|4Ho%^jHS z?%0|xX;9dmls;C z8$?hiC24n$CF-P3R@xuy9qU!@*Ys>%!?%qM%9D7@EJUL4T+}R@!_TzG_d7Ga^ ziFPD?b#L{b8b(#OPxg$e?tH3MUd<(m_@qsb82+?1UF2N1YpS91DH06=0UVMJE-?RT z>nz5-?&f3W&Zq3qE5R_{>7OlTI!U~Zq_1D#Zq==Oo^!8rmZBf@R6nu_R$g^ewpW@V zHv3ZpPubch&qgZludX15^=l6(s5iLTiYCYJsIYKq%6^54``UuTB6M{WW4 zXRn_8&^ISfPxXg*c>K`#)(SnfHU_$(R~tX+%P$jEna$cdW*B)cz_-6H*ywuRbS-i&A#lC+< zYe(EhUW&F)W8@UHL(wlU;1nWW@eP8fDKKok_!J}bEan`FZ=R_3xGEsfb%r31YL*?* zVZU|pv}MQG(t8euQdQd|N^+ENt9PHp`=0J2jbb^U)Tx1w@`jdG-MiCrHtLMq<163S z)ZB@qym5kJZanQ6|A%`E>{IkKW6xpjmzIm1e{<#-xP>Ua@tF4Tr-*MA=Zf8bbC#RA z@t8-jUs@%xVSR~>8xQReH~xbLs^M==o|4%4iS^<58D?L6r!D;#We`<`V_ovGtyh*t z-mp`UnAj0|zR@j8yX{UiHth_1r*V;yn! zR&eK{EfQPjF3iA(p~Z~wwoE}20#BjI zkU$!VawU`ADvPM@n!(mRC2EqvieJY_>slYfXl_A3wbJku+LNn$7td>@>X>CzZHf_& z+&*_~TGXYp>N1Zeqn%Cb)YYtIZ5vQoHQ4EBdA@ygb=Sje{(iIsm|@BnEArPZHg`P> z-OKI}iA!mBP{wWU$%^Xt_qYT?l`(=^-6O%1o~UgeN1pU{t+Y?aPw_6>rtNH5%{Pu4 zc+#brFc;ZBWLJ;7(J+}G*{NAz`XzQ zv*=@f`~r7uyp!r!*aLz7w^VXsX~MO8*N>t+yK3^}{H(wuZQrRW%e-_Zwqk;Bf;~=Q zkKdIZe54&we0{AS>5}5D{ju5mS=ITtI*nyrtaYRMwLKa9-e~Wd_hSWk#4EXC+EM&h zgv}`y@x^N)CGLb(I_vExIJfGRr@7-3I@d_K`oEn)O50bso_Pw^Guxz~TF2sXzbI|3 zu`1Zs(lGM>_M$We+a3xT(JS2hP8ZGH;R5UQSQ==4$DYY#owXr}3TkZ%taZv)8s9kW zq?-;tOO~I{IHm380*^aEVmWcWp87%xZDnaF zmAyffj`v!3lg|2nY%UzI_=~zsPkgJpig%{?x2Ey=>*A8%SMSc}cbEAONxjE1h)^q! zyzjmlRbXF@_5d%v&oSTgNdr`zsG>w{xoL^{UH(ZkeijD>m*1cgeA0j@Jpsw(M~mPN zvsy2$?!1zTMplOZlaKz7GLd6p1iq1vZOsm0+6mY4w5FZXHzuWV{%C0$cR1#@<38m^ z?vn*%v3-t9m_~({rbFqRdR|Lf0VH=SO1@FA@8*K709;VZ*2X7oi?2Bm-;~8~!L))> zqwg3cPx>m-+>yg3ef0==Rd&_S6kB%is3RHMpXKVq4h6qY?!+QVRlvAzz33KFQfyr2-HsrhCf}u+5 z7n{REPGUBnoi3PJ>R05o^yC?cw!aUgdr0M>SfOZh>awL%;+~vkG z?qo~QWp13fAz3Mwyh*vl0<|aDzx!~;prwf_%^(9&jI%<@V192y9xpyu6J6$YkLTSA zSnz_DE`G(eg`bm4n9z42q-a5KUu#5_kqD%OouMu*L zlv&&v_zs-XNcc}3@C{fN>QMa=Ao(-ttZD+I!zsV+@hWAW`n8Iakne5_1jkl4t=7A!<& zHaeUUkYveOV&Os2df3(iIRzAH-lkZ=3M)MSNKyeLhE`$D4M_#^m@AG)&6E+*wG*_7 z2=KT%x-bxVj}H-v;cx0IG%OEcV3~{wM_Bm#QF<9Ma75aTNRBs7s}YOn3z#L#QR(#R zqU;sR`CG9teiF|Y5A2dXuBr0Az38`ZlZ!UXHat8plsGIFG0qWvOAVj;(M@*5gi9pJ zA^FH_pW+b~$$2Eb)>JI_wZzKuZhWLuYPz+?6uy2e4(SMiG2RnzY=v7mjPYZ=Zp$cE z#-Xrn9vE8pyQj)e>8I{|#tlJ&oh^ zFv2I;@b{E*IsVdvx)~(L3f5+%j|k-9wrOGH*c!W6D=OELd;4*Y;TpV*h&Bw#epzG? za5O$*XoRST_*W9+TZ}f3*vthnqEn6%kuY-nrqI%mFyS$kH1zMkBf%s2eU(TUJTkGJ z421aQ<{BpA#~r9ZA!0leB-9(fkMz*VQvvs6Op+9Ejg9ln2qn6igPSjLNSx$_3uR!= zEj=*X4O1xbtIN{5WAoWo%J&XRltjxeJBJ3Q0&>UoG+Yzw{D;!1~!+Y4Q z5L%Lgt%-6ItqF+-Pa81<#z>9GZ)6lJNYb73Yml_z5tG5qW`(vXb`N5bM)Q6Nc66`2 zTErJJ-be6wD0AV3V?Z-`G)}N$6@MCYQesHILqtBj^-z;sadra_)hZ( z9*+=jO)GgX^qq?0?pyJ0sn4C*=7tGHVHJ?rEwz}5uR-hAhB#k|w7X_Dy=7q$(=e+@ zjI2f3s^k$HD+T#*a6(_eZ{VF;SqVR)RhY~w+SO2=cQLRJK$U#x`gFtjy)#JIhR_mv zbJb}1cN6GGHPWiU1bSdbdW56SGs-@Q$?9{#b;CwRszAyB#C(rDX)nggT>jMJWcm@VDNWQ%$_A_s=)O zS*MH37dItlicPm&W<#fAmc&)sjxmg`_yb1xt>~rYq>A1@VET6&gsRWRX!1i48IB}n zm1!HqaD~NFcKsoPrhsa7E{sOs9j9Z>z}!(0d=k>VuEfIjI9VqKH(VuOkI2boIcwF@ z4ROAig&Ns5jrD{!?6wYHU{m3rGu3FC%hCd%J=gt&8X}HZlO}+0_NzHe-SqgN6+j*g6 zweFt9!9cy3$bmb5E0e|GF%(~8kPI;^24fpiifK{4OX{0(2npewkfSkr;%eIClKXUs z#Mh5u2+l6{oHkH|>!t;Y5CO{rML0{`lrT$dy6QF?+8relS4lfMGZmjOx+p0_qmo51 z73o6N1?3r0oh(MC`b_lC7FEoDsHiIc4@LDjcg8wcR4JsWN&-dY6iOC8ZWSVGylCBz z2VS*kD1)Mc)4vyFiNi>=^$x-I4uLLY7vc>NC8TdKLSQ;0J&9Sgfwrjh`)yHluq{G7 z*@2018ENMRCdNP1LEyzvx}W?+@cgYegOOLmv>xm>OmwPox)~}io$j7r2(oZ+;SoX9 z5v0&NA_&K6I_bi_K7ZXdG&w}!(abzbr=>AChqfWXq5xmSP@+TllFPE zI9YUI;N4WL&1V1YZxjiofH3*25YvFLieU;E4$DCaaRYH6loADuF7nbFkw1RypyYx8 zX|^)+@$h4=o=A4et%b!o1CpJ_8H17??oqRr69g1{p%rjnypMNUd1nmooKsHxI(Nop zttt1grdEWj-mDA6&&h;i0(>PA?6@h?Z2vIA-17v($o&ETfI@t?1)$&eo}f+Os%ei1=*swb8GfkL>HgY!FVH;iD z-Y^ATPBU1~43V=I-kP2T9A`rasgDcI@ZVE-W{6$2m15kjOk$V}OKW5VijFvW$pisH zn+i%q(vm!pxP(!Z)H0HiNpPM{p9Ht*7-3+8Fl^9<@LFB0Jj@6Sj}W$D2-t24pc7_%v3e8`viWsExEm#KXyCAkByZT|1&%3*1->$(>;duJNz| z4-JM?dZ>koEUXl9HxPe}WF~;CN}6}GMzkW=2klmH{j<{$ns1sRC_;OnP>D2pW^|VY z0k<+L6cHVKWbS8H2!E7K&+=V~O5p-ZCQQ}B=7>77g?6r9gHStLnBc)_*v z5bitJ0acO?Xt3T8F>FBUjp|gSjlvvyP`QuALFN7jfo4jn4aw!vObu)V9UV5R8j+k_ z6;(PyWh06uafY1F!$2$t+OQQ{3o`}ygi5eCm33fX?AM#9$d(lhi z{-9UYUca=U|MJp;6KCNPS`|vQy0St^m|;XQ?}}AGlG7fq?ANu77qB7Qw2J+j&=Z*4 z*j&=xtn%%v@vHgfDL3}nyt`_=dk`yLChcyNC=d=us0i=AE>U=ptV68m(S`LhAzUWy z$h1dPUu}-4{?v_tzMa$9PUl!r)9fVCuH_JScFyCtO#9q|t4HQT;W@8>%Y^M2?(bV> zE5&=4BT8*2H0W64X>RN6Fp2HcEl+cjPU2pSl_0#DT`cAHF1I2hI8~;C9Zj!&%7Q3s zNr`@bygv>zPM+&(t6fv%LC>Jx=;xPXVSNpc*?_1%T@mL0kyM&Ihv)A#zf`}H7JG77 zkN06bld#X;c&wU3PjTi*{uF6|F>;h|fCzP&Efv>z<}8#=>Qx zjBl$o?tIee$c=BnW4vj;Y> zB}!>4?9Pp6VafTF3Y@Sf=rf8FZba7`C*1MqcPA_!JmF^igcCl3;Dk8g_ZFK6P8gl< zffLRM9cYt6aH_RgS}W(XwMHmUwTI*Cs{FoH{s`t?%>;oVbtNF)Zh(t(Nv;1=sM>Ze-;4 zNDnv|?wzMiO{c;-!(=9^b7cJk$_pHRBp)YSbrv+Kow>Z2e@#dJ+d3u8Mzv>#*_uv; zbehs^RA+L-gUW*gMTu#^;JqIx%C5QQpwXrWBhYa)f*}Y(;lmGSh_6KlRo6zxgq;kb z>@HQY{F0&ESSTa1;809zC-E26(lWkbe4$;J=!sWoJoROoesx2(hE?{*$N3r+{^lgj z30(`q?kG<{#CIz8%eahQxja0wy3>(MA6F`ANx0~eS>%k~Kh5x(Ln;!6GtzL_qc>+T z$CMt3InCTf?(u@o&z>xJEkewMqnyIiC5~vNgbqgy=`}-w77d#)R^~80$K@%wt)cC1 z!BKn{+OS7sLEsIt8nc?hT$;`md7CjG2|Z9YNymaNx}u0b9)A`s!s*!4I?HT+a(iqB za%NX)`ZV=;GY2cIksCof(xfyUCGs6YmJcW5_Ss>XPDA5uhZ9EHXT0_&dB0(M_&4Wm>N;FB;GcIP_1-#4ah#}Er z>4i0kiHNq9=1clVQecWy*38(*T-GDvC1pk-6 zcg6<%J#q&xc%Ul=c@61H*~F5_Wdj{C*^q7&R=FU`7geFFKClzW(1Y*R?{*UCkijT% zJ@WH`y(s^2FS^J{lOunceT_L=77*ZRSUN%;^q9ll34|1XiK<82i1F}X+;K`)AwlE_ zsm^{}7+!Vb3VP`zgI09kL*@FL$P%f?Dy*%e75**CU4X2@Q}Aj}4ply8Gk&AN~d9Fk>=+y?xOP;t}o$E?OwvUi>lyI9++5rwz{SOCgMkxrlKhN*&CS>&x|%xv zOZH|g$yjG3HXm}$?GKq@^C9s?_B~o{ccXVs;vMISoy*!G3v5^^apk9wzK1P@WKzis z+)1xjqGU<_B;Uh^(R;YEXMi-O@i^F+5CFr4GA=g~JK z=)kBYkNMIux0(t~#w|AtoG!_|nYsvug-qWKm>FDS(O%((qo(DFZZ;qw5we@Kjjmo( z8_aH!$J}Z_zi*-a$%6JvBT~m z$EeYRX3kTMZjUrd;tqd%g?a5%DSM~6L1?OzT$xGfO-LLM7ubX-XcA2W&JM_CDLfl+ z9kFPOb19aj4N%e~xrikJYVEvGc&|b%8W$afutd5*Y9s~RgxnQ~$Ds@4=p?Z(?qM_S z_f#VU20~vjZd0GRpp{!C!K4#CS~@y7K(J_QiEBHZ8{9cEGY%ZJk{s14`d+evFc@(s zsjl63^uD0gH&ahG0<$y|ZnUq3t0y1oCX;EO*==2yqjo zO}2Sq>WvD#r*=}R5MKZ)U5VEeUbwXpr#M+(R@xOEvLBs*C9gn5!m{a_lbz7PED zfqY$Z{EBS}({h0KHT8pH-a6`Q%-e?7j)qtT;h zWAZ>-)uPQSrW7PR(}@Uk*Hkv<#MJ68_;hcEl`2N8h&i#i;J|1MJ=GeRn?o@o{p|!AJ)!MHY%%B89Yv62>)Je)JU&ua;iNJ)5D?d z>Y~m#eWw;N$56D2Xy1FnG_w13qYPyC>vDp-AJ2%%?$?zM?0&q&vW>$COL9#L2^|T> z>%Tux9^UsfnX~=ZpYf%F6W z7Z*@rr81nL*QHLBVQ5wy?z;&e3tea{Thtz_pMWkTf=haLs`E0bz}fxq#d~}saCSq^ z?VL7r@Z8jQJ-32?dv4W~4e417ny=X7v+?J>g=je<LgT&M}#CX ze}9$v&aqAf8qa*bH`ca@cP~WK;X><|K%$x9{bA~xX6`^j2E4>f6KICmyztI6_06j$ z5%6~}F?d|rVqqW(ejbT}Z>k8y!he=)2<=4QcI^!}ZTsW`UZL%x1fo3&zV*`+eaB;+ zH8^elq9^dfCQ9&KsAHHs5s_>qmnS8P}i z$Q!V0iMf4?O)Mq@k?cH)t75|o1-)b}l8rzQr)2GW;RwHjn}Yx?eU3TkW2d*nm4-^T z3liYwAL!|9)udPW&Z?b>IF-`WI{(M<(lva8)a$UOwrgA!uncrOBCoWHoN4

jBSJ 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 Y+QPl_%EMuAM|ZTixl`Ho9d?la4`387F8}}l literal 0 HcmV?d00001 diff --git a/dotscope/tests/samples/fuzz-regressions/crash-272d0d545dbf696680104d5c85937babf4faf76e b/dotscope/tests/samples/fuzz-regressions/crash-272d0d545dbf696680104d5c85937babf4faf76e new file mode 100644 index 0000000000000000000000000000000000000000..083c3f2868a12bc5292f7869c39496dc73c3b18e GIT binary patch literal 964 zcmaJ=ze^)g5dQWh7Mj8ZFB}}mt%%@3vhVJ+N)VzTs1Wc6cSXR3BZY30zd$bSVW+lN zS!{FH*(KH07HVY?NTq0LYrj&SffvtMTc_%_g7NM!emC!Y1A$OZ-ZN#VgzWq`1 zzW}vPXLXTbkiq^)5S#|a+$9d>tjGz1O`F~4rb8o(Vj8-);U9HGje${v<7^IIWrqOj!@v1hvwCO4>UY$8a{9G zUo3B_PEz?+@HZCqSIS}Rd4I9I;p4jG6+EvC$e0c1hhTff!-b8Nh3U9&zEtwG(m7G1 zu`HNNT=SNejMe;J)PQJh4>~E%?WWiutoikAAv6D{S4L~b9O8k(!Mn)nU_7PD{bn`% a81n>q!QG98pIkZ3zexsd90AsMHvJ!ht~sUv literal 0 HcmV?d00001 diff --git a/dotscope/tests/samples/fuzz-regressions/crash-291138423e8558b6efce8169b74a82a0b8cabfcc b/dotscope/tests/samples/fuzz-regressions/crash-291138423e8558b6efce8169b74a82a0b8cabfcc new file mode 100644 index 0000000000000000000000000000000000000000..c5835eaa8c50069dedbb5ef9e7480b877efbaade GIT binary patch literal 353 zcmaJ-JqvHK7u6?t1krH_S}>6;i@2V`=LeU4MUA@ntwxWhuid6uuBI% ux)j0nEK41JN~4C!>@)b{{Gblw3!*sg5=s_h1W!X{-M$hz17cFyMeqi_ms1!3 literal 0 HcmV?d00001 diff --git a/dotscope/tests/samples/fuzz-regressions/crash-2ac2ad93bd33102f2178c81b4df2eb486a577054 b/dotscope/tests/samples/fuzz-regressions/crash-2ac2ad93bd33102f2178c81b4df2eb486a577054 new file mode 100644 index 0000000000000000000000000000000000000000..dc3ff0b98689957f519720103571c1e8585b02f4 GIT binary patch literal 507 zcmc(cu?hk)42J)T4&vg{MGyt=wzCJ0H@P@C2;!)iMGy{r3*Y2sXLkpm;_z_u5mX#v zq9O$y-28?#P5(4$I+|K*fRVAl32g{fHH}$BL>6#va4AsWp_5RYVuV86^)Z>14YY_gO#CPYHi3KiM${Retqp_6DNqR=Un z3XMdFL?IHD23e1LoHKLp?uva_5tUytkMsP^J#){br{i%2q*WZa4*I}ok)bo2G{z*% zmdZ39f#{zx{iM#(O^m@O*6k!F#4u&p@Dj+30grc0fcdj^uC*S~Nt1%stue6zuRQz? zU`vMvKgC4LvVDVxiy6+r;@%PxSvn#U5IQ(%%9tb!!lW(nC=}Y*Y1GFnj9Fd{915w0 zqUx%kZj_ZI!(7kC^5UMga*$_g&V{1?yQ?f(oL`!17Ap*6bl5HU$deJqe-e|9^Feup z)GAE;UGovF-L{M~cVMY%B>+|(uCMXOZ&FHJ1kSg-D_osh6|N%yeY`EVPek|5 zv`pcoZj}r7o@=ebzqhWob8PAys>S=%z4$FC|AJpcowai2UrbfYZP&8JDrLsJVM(9h zj^bNmcSyHdibGbsR zin4aoS{8822pdl6sQ`&YFMl;=y_Xwvg_y5I0a4|cww)dF`Gk$SSv~V-y3Gyx93_4l ZqZiUY6QQ*3sn+fJM!hgbmuKjk@f%??F`WPa literal 0 HcmV?d00001 diff --git a/dotscope/tests/samples/fuzz-regressions/crash-2e514684c4426d239b3311528e7b288e9628f80c b/dotscope/tests/samples/fuzz-regressions/crash-2e514684c4426d239b3311528e7b288e9628f80c new file mode 100644 index 0000000000000000000000000000000000000000..c0dd695f9bff7d8f8bc51152bbc5901f8f4f9a0c GIT binary patch literal 139711 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 bd=Eh);O}}^#PTwIs>Af%qewI@`-*=65y;Ji literal 0 HcmV?d00001 diff --git a/dotscope/tests/samples/fuzz-regressions/crash-36dc9407db12eb3dc0c8416cf2e05702860afa13 b/dotscope/tests/samples/fuzz-regressions/crash-36dc9407db12eb3dc0c8416cf2e05702860afa13 new file mode 100644 index 0000000000000000000000000000000000000000..540dc5d4aa51fba7e1d2e6cec6dba7422310bd89 GIT binary patch literal 1503 zcmdT@&ubGw7=61*z%&OJG$?|&5`~r~yXrAPh{Zxv2&9&Jh;%@5X!nwH55*k3h&StB zpohKaUyz(Uc=Av^h=)oJqSRwgts33W@0;E2W=m@I=!2Pg^Xtu8v$lf2L`x|DzK@y64wr})(Lpsw#bn|=$RKyk?ToC&N|W3 zlt-N{>yoU$4zzc6TJuc(47R3x|E;g#Ebvgl2s^&NYH>FWH=xR+750|J8PLybu0DWh z6t&b_Wvjc}z%b*Ps9{E1wIdY~%%l~iR|i;7=z2dW5khM3xR`BGp4nB^fZI>4?9Hy64yt&@_s` zm%x_6yi^zNm2qnE*?fyXjBv2GKY|+c`+fJ_&@HPfT(_VFEoP1@0QkXg>e$${MFRUA zG!x%j9y~_s!DEl%WGjbnA+tRGr0|R4ePPR|3dH@cX){ymB^t{fzE)LPsUaX?mM`XD zsmk-Y<;A&a{a|cX_VL~515vlz5YAg1eV4w3)vYJ;QZWWGNw#U0yqpoXR zjop&I%SbExn$Lcy)JFtY=#%7{`k~l;iLG#Ujk!PAGw^`7OmitQN#!4p(TVxTi;jHr z@i99aUMLA#BtiQ(;lP>sf9J@Act#k|{~FIH#Sni>p3CH1n>jAmRvNb@`}mupY;oU< Nh~WHPhGvE^_cts6)i&TdDrm&CKctnwO zf{hR?ER+;Mt}tMu$Qi*x1S=aa8s(2Odw>7`F+brVK_7SXXJ=-2W@mS2O4Iqg2b8=# z@HrTUU_i-=ABj_4Lk`m@k<#j|wONlh|s*EAwb@^GK5RK6!Q6|^bP-*(r zeP1vq$BC@xDX(~BsqQL{^~`<{PfOv%mrCXH?@ucwoWB-zlL&9e0uPgtd*ODS?2n-n z>$jd9ggoG9S8vbDHO?%~onKk7cdh+h?%sUk<%_p7vYbAH^*fZ)LljI9)z%wJqXhCG zH^cXJsgC@IlsP0OjMm-&0=2d9Pg2K@CfCY)_*m?iIs-xYz1e01N zaeRB7lo~muWl~YT9Kn{`XX)q~??#ym{KFxvYVYg=icWbOqn*n(jX?xp=^B6*ao4Vn s%GkE7FI&vttkab4q0M7Q_i&HVHIc}unu=uO+2_>M^{PErfoiMu8{hyVAOHXW literal 0 HcmV?d00001 diff --git a/dotscope/tests/samples/fuzz-regressions/crash-3ae512e97f3e229aca9592be6dff56336cb1e91b b/dotscope/tests/samples/fuzz-regressions/crash-3ae512e97f3e229aca9592be6dff56336cb1e91b new file mode 100644 index 0000000000000000000000000000000000000000..06fa5661b878ca87782b3b13e53b03d7352bb1be GIT binary patch literal 1665 zcmcgtF-sg#5dPlA1I;yQwouRG9dAa6c%aH90pR^rqYmvo6Nl3=k9qbhbMmA&71jV=FRMTZ}(NBFf>5bguqd= z1VNvQfm+#GJ8ZYjR8JkuYu4Ul)4(7L>>u%c9Db^S6)S;1fT>B~9j-3)bRkdBY}-#FoA#$iRGzI`WpNMl4nG4W6}I(Qcg7G#G}Fh+I7 z2PgGGbvF|{XhXS;IVF73xueulUWS|Bz;heABAF~AOk4U^p4m(v*K=n~PhT_waba(D zSx$DazA&+~rpGUdMdLT18z(T3BM`^xIF|pADz}7Ze7ywfL{noO45mMCj69k3HuG(V z%y#dAE7-BfC1;g#WQ)4nVkJgeDd)M;JRLXOL14GN_+{*Rp3?~yowlFa`xn9|l%nX( yfqTi*0~7`(8=m#sa<5FH&iD_igKAa) literal 0 HcmV?d00001 diff --git a/dotscope/tests/samples/fuzz-regressions/crash-3fef7486fe48c8a62581600ec54c286fe0a8eac0 b/dotscope/tests/samples/fuzz-regressions/crash-3fef7486fe48c8a62581600ec54c286fe0a8eac0 new file mode 100644 index 0000000000000000000000000000000000000000..f7f851a65ad87deee84c71bcd3ef8ad7c52cf26e GIT binary patch literal 379144 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͕Me@FcaBRvz@3tbrRwNFF{Q*Er^N2T_=r+M@H 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�n>$yWx#W(m5`rHtzvBz%RP*HSh9!d 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

oZS3lI}t0AnxR}f0E9$4R6#%^lUv5 zK`WH-UrTBT>TSN?5%47BSaS30cY0oGQzej&vIapYiqG`zTa89q<9AR^ws=|=C2pP+ zRe3XfM17yHvhfRfTe9Gu?k&_kvxX>#=RxZ2tgSL@D`ztw2YMnHQc2evvOk_8B%?Iz zwJG(JSn_$x!AJ78#fMKTIb!IS@J=V|GJs(?R8(fl-{#D*yIxm zoC{=G7Lo~8ga&DWrPI_CSBIvKA07{Bq@*-BS`rdcVq%acTw#*z8La@ z7LDN$YK`+h900tDVE%(4SdctCab+a(yEqC${CqHgz!1wqArX^YU1nU5izKA&QhMZh zyU3+Q?S}vJ_)kHLhk6zt=eeB@Q`>O)y5ePp&MUKl*m(QgLXV9pzM$Y8J5jw7u_AJD9)7xJf^%yx7)p>_v{FI9iCdNzCLr0#JQ z|C8^nX6YPRF1T;3J4^4(#ZSe#jFL3Hk&4eJj<#Ic`dInRlJ)4+9UhLz{259L*{|@# z1-*_NKkQn*Ap3;2PI-FusTtPPGF9G))VK8Jk55`R?4q6+3QpD9dS%jCv#**0Be%Jo89m5$)HEwSvH*T>Zy=X>~5UXaIxqrWEa;u>Y zBYA|UD&=ugg7)l4;a8^7ywhKg6exEV^{oAdQI3@=UlM};N}4ryf!$WQS9hIsyl+}{ zSW@0<``V(Sdcue1y}LNPa7BNk^s|SmFYW|gifp;c*RPlxxYgO7AQOE-YEAaGB^ns) z`J7cQ1rFLqS8DEq>oBH87|=gXZqh5ZK^EVU=}X?D_&-hVbOF#D2v z=Y$NAJScH&5pJO6W9NWk{)@UH(jm0uV05Bi!XZVfsU+EA1iy%oIB0b=8TpyJ{ttde z+%vT~NuQ7lX3$JCW_k`C)112ylk+A^;PKl2WtGQ)gR2GZ?YMoXa`5PO&s$KIR4Vx1 z{fJRDBTJlA&?QvnVn1&dIiOuK^ZqU38w)}3krY#&`$N6>(r7HSBiP@RDB)`%w0#mQ zhQ^?bJWJ@dG8Q@Z5_38#xC>)R}D zAXP99*YXuoBG;xDhU>=H?RDGzJZ4$fgA%_3vWBg7w*~WRQ)TLI?O56#t|9R}YI#4_ zclH#MXI0WZR}VThgm#}X7E7v%d4DnC{rnKl)DJFAy@beWYNT0m1)HR3bj@zt@T2=u z3O7Ph%H8HZQ)p%@uV^l`e)Gqpc|l5Ao&ox$sf^w!^Bdfjbq@?UZppr#b|7ud^xHQ3 zH-z@*d*^7p5 zv|F)enoiEe4^3igHhu~l?C?Fgp>XZ-mRT&lFm?SSm*(gb^olIp@mE*w- EhbM@7 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 K#j4=~F8&uJNS#3d literal 0 HcmV?d00001 diff --git a/dotscope/tests/samples/fuzz-regressions/crash-43dfaf4644a738c2588a689f8f7ee6e376fb2efa b/dotscope/tests/samples/fuzz-regressions/crash-43dfaf4644a738c2588a689f8f7ee6e376fb2efa new file mode 100644 index 0000000000000000000000000000000000000000..447ffbc0adc36372e86119142c494ee0a44d6255 GIT binary patch literal 385 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