From cf101980b584c6ee97a8ef1416727e5ae84ce87f Mon Sep 17 00:00:00 2001 From: Brian Johnson <34129+bridiver@users.noreply.github.com> Date: Fri, 20 Sep 2024 16:48:45 -0700 Subject: [PATCH] Update `filecoin-cxx` deps, mainly `multihash` reland (#25666) Update `filecoin-cxx` deps, mainly `multihash` This change is a first pass in getting the dependecies for `filecoin-cxx` updated, to eventually be able to drop the unmaintained crate `proc-macro-error`. This change updates `multihash` to `v0.16.3`->`v0.18.1`. In a follow up PR, the goal will be to deploy `v0.19.1`, which drops the unwanted crate as a transient dependency. --------- Co-authored-by: Ralph Giles Co-authored-by: Claudio DeSouza --- components/filecoin/rs/BUILD.gn | 6 +- components/filecoin/rs/Cargo.toml | 8 +- ...hird_party-rust-bitflags-v2-BUILD.gn.patch | 10 + script/brave_license_helper.py | 1 + third_party/rust/bitflags/v1/BUILD.gn | 32 +- third_party/rust/bitflags/v1/README.chromium | 10 - third_party/rust/bitflags/v2/BUILD.gn | 8 + .../rust/chromium_crates_io/Cargo.lock | 67 +- .../rust/chromium_crates_io/Cargo.toml | 8 + .../rust/chromium_crates_io/gnrt_config.toml | 2 +- .../bitflags-1.3.2/.cargo_vcs_info.json | 5 - .../bitflags-1.3.2/.github/workflows/rust.yml | 56 - .../vendor/bitflags-1.3.2/.gitignore | 5 - .../vendor/bitflags-1.3.2/CHANGELOG.md | 206 -- .../vendor/bitflags-1.3.2/CODE_OF_CONDUCT.md | 73 - .../vendor/bitflags-1.3.2/Cargo.toml | 58 - .../vendor/bitflags-1.3.2/Cargo.toml.orig | 39 - .../vendor/bitflags-1.3.2/README.md | 32 - .../bitflags-1.3.2/src/example_generated.rs | 14 - .../vendor/bitflags-1.3.2/src/lib.rs | 1729 ----------------- .../vendor/bitflags-1.3.2/tests/basic.rs | 20 - .../tests/compile-fail/.gitignore | 1 - .../tests/compile-fail/impls/copy.rs | 10 - .../tests/compile-fail/impls/copy.stderr.beta | 27 - .../tests/compile-fail/impls/eq.rs | 10 - .../tests/compile-fail/impls/eq.stderr.beta | 55 - .../non_integer_base/all_defined.rs | 123 -- .../non_integer_base/all_defined.stderr.beta | 27 - .../non_integer_base/all_missing.rs | 13 - .../non_integer_base/all_missing.stderr.beta | 13 - .../compile-fail/visibility/private_field.rs | 13 - .../visibility/private_field.stderr.beta | 10 - .../compile-fail/visibility/private_flags.rs | 18 - .../visibility/private_flags.stderr.beta | 18 - .../compile-fail/visibility/pub_const.rs | 9 - .../visibility/pub_const.stderr.beta | 5 - .../tests/compile-pass/impls/convert.rs | 17 - .../tests/compile-pass/impls/default.rs | 10 - .../compile-pass/impls/inherent_methods.rs | 15 - .../tests/compile-pass/redefinition/core.rs | 14 - .../compile-pass/redefinition/stringify.rs | 19 - .../tests/compile-pass/repr/c.rs | 10 - .../tests/compile-pass/repr/transparent.rs | 10 - .../compile-pass/visibility/bits_field.rs | 11 - .../tests/compile-pass/visibility/pub_in.rs | 19 - .../vendor/bitflags-1.3.2/tests/compile.rs | 63 - .../.cargo-checksum.json | 0 .../vendor/cid-0.10.1/.cargo_vcs_info.json | 6 + .../.github/codecov.yml | 0 .../.github/dependabot.yml | 0 .../.github/workflows/build.yml | 0 .../{cid-0.8.6 => cid-0.10.1}/.gitignore | 0 .../vendor/cid-0.10.1/CHANGELOG.md | 25 + .../{cid-0.8.6 => cid-0.10.1}/Cargo.toml | 14 +- .../{cid-0.8.6 => cid-0.10.1}/Cargo.toml.orig | 16 +- .../{cid-0.8.6 => cid-0.10.1}/README.md | 0 .../vendor/cid-0.10.1/RELEASE.md | 48 + .../examples/readme.rs | 0 .../{cid-0.8.6 => cid-0.10.1}/src/arb.rs | 30 +- .../{cid-0.8.6 => cid-0.10.1}/src/cid.rs | 38 +- .../{cid-0.8.6 => cid-0.10.1}/src/error.rs | 0 .../{cid-0.8.6 => cid-0.10.1}/src/lib.rs | 0 .../{cid-0.8.6 => cid-0.10.1}/src/serde.rs | 2 - .../{cid-0.8.6 => cid-0.10.1}/src/version.rs | 0 .../{cid-0.8.6 => cid-0.10.1}/tests/lib.rs | 16 + .../vendor/cid-0.8.6/.cargo_vcs_info.json | 6 - .../data-encoding-2.3.3/.cargo_vcs_info.json | 6 - .../vendor/data-encoding-2.3.3/README.md | 34 - .../.cargo-checksum.json | 0 .../data-encoding-2.6.0/.cargo_vcs_info.json | 6 + .../Cargo.toml | 7 +- .../Cargo.toml.orig | 8 +- .../LICENSE | 0 .../vendor/data-encoding-2.6.0/README.md | 35 + .../src/lib.rs | 333 +++- .../.cargo_vcs_info.json | 5 - .../.cargo-checksum.json | 0 .../.cargo_vcs_info.json | 6 + .../Cargo.toml | 37 +- .../Cargo.toml.orig | 7 +- .../LICENSE | 0 .../README.md | 0 .../src/lib.rs | 8 + .../.cargo_vcs_info.json | 5 - .../.cargo-checksum.json | 0 .../.cargo_vcs_info.json | 6 + .../Cargo.toml | 27 +- .../Cargo.toml.orig | 16 +- .../LICENSE | 0 .../README.md | 0 .../src/lib.rs | 36 +- .../.cargo_vcs_info.json | 6 - .../fvm_ipld_blockstore-0.1.1/CHANGELOG.md | 11 - .../.cargo-checksum.json | 0 .../.cargo_vcs_info.json | 6 + .../fvm_ipld_blockstore-0.2.1/CHANGELOG.md | 28 + .../Cargo.toml | 10 +- .../Cargo.toml.orig | 10 +- .../src/block.rs | 33 +- .../src/lib.rs | 130 +- .../src/memory.rs | 7 + .../src/tracking.rs | 2 + .../.cargo_vcs_info.json | 6 - .../.cargo-checksum.json | 0 .../.cargo_vcs_info.json | 6 + .../CHANGELOG.md | 8 + .../Cargo.toml | 14 +- .../Cargo.toml.orig | 14 +- .../src/bytes.rs | 0 .../src/cbor.rs | 0 .../src/cbor_store.rs | 0 .../src/errors.rs | 0 .../src/ipld_block.rs | 0 .../src/lib.rs | 0 .../src/raw.rs | 0 .../src/vec.rs | 0 .../.cargo-checksum.json | 0 .../fvm_shared-3.10.0/.cargo_vcs_info.json | 6 + .../CHANGELOG.md | 27 + .../Cargo.toml | 41 +- .../Cargo.toml.orig | 34 +- .../src/address/errors.rs | 0 .../src/address/mod.rs | 2 +- .../src/address/network.rs | 0 .../src/address/payload.rs | 20 +- .../src/address/protocol.rs | 0 .../src/bigint/bigint_ser.rs | 0 .../src/bigint/biguint_ser.rs | 0 .../src/bigint/mod.rs | 0 .../src/chainid/mod.rs | 0 .../src/clock/mod.rs | 0 .../src/clock/quantize.rs | 0 .../src/commcid/mod.rs | 0 .../src/consensus/mod.rs | 0 .../src/crypto/hash.rs | 0 .../src/crypto/mod.rs | 0 .../src/crypto/signature.rs | 0 .../src/deal/mod.rs | 0 .../src/econ/mod.rs | 0 .../src/error/mod.rs | 0 .../src/event/mod.rs | 4 +- .../src/lib.rs | 2 +- .../src/math.rs | 0 .../src/message.rs | 0 .../src/piece/mod.rs | 0 .../src/piece/zero.rs | 0 .../src/randomness/mod.rs | 0 .../src/receipt.rs | 0 .../src/reward.rs | 0 .../src/sector/mod.rs | 0 .../src/sector/post.rs | 7 +- .../src/sector/registered_proof.rs | 146 +- .../src/sector/seal.rs | 0 .../src/smooth/alpha_beta_filter.rs | 0 .../src/smooth/mod.rs | 0 .../src/smooth/smooth_func.rs | 0 .../src/state/mod.rs | 0 .../src/sys/mod.rs | 2 +- .../src/sys/out.rs | 2 +- .../src/version/mod.rs | 2 + .../tests/address_test.rs | 12 + .../tests/commcid_tests.rs | 0 .../fvm_shared-3.3.0/.cargo_vcs_info.json | 6 - .../multihash-0.16.3/.cargo_vcs_info.json | 6 - .../vendor/multihash-0.16.3/.envrc | 6 - .../.github/workflows/nix.yml | 31 - .../vendor/multihash-0.16.3/Cargo.lock | 1104 ----------- .../vendor/multihash-0.16.3/flake.lock | 103 - .../vendor/multihash-0.16.3/flake.nix | 71 - .../.cargo-checksum.json | 0 .../multihash-0.18.1/.cargo_vcs_info.json | 6 + .../.github/codecov.yml | 0 .../.github/dependabot.yml | 0 .../.github/workflows/build.yml | 0 .../.gitignore | 1 + .../vendor/multihash-0.18.1/CHANGELOG.md | 29 + .../Cargo.toml | 15 +- .../Cargo.toml.orig | 14 +- .../LICENSE | 0 .../README.md | 0 .../vendor/multihash-0.18.1/RELEASE.md | 48 + .../benches/multihash.rs | 0 .../examples/custom_table.rs | 0 .../examples/manual_mh.rs | 0 .../rustfmt.toml | 0 .../src/arb.rs | 27 +- .../src/error.rs | 0 .../src/hasher.rs | 0 .../src/hasher_impl.rs | 0 .../src/lib.rs | 0 .../src/multihash.rs | 44 +- .../src/multihash_impl.rs | 0 .../tests/lib.rs | 2 +- .../num-derive-0.3.3/.cargo_vcs_info.json | 5 - .../vendor/num-derive-0.3.3/LICENSE-MIT | 25 - .../vendor/num-derive-0.3.3/src/test.rs | 31 - .../.cargo-checksum.json | 0 .../num-derive-0.4.2/.cargo_vcs_info.json | 6 + .../.gitignore | 0 .../Cargo.toml | 41 +- .../Cargo.toml.orig | 26 +- .../LICENSE-APACHE | 0 .../LICENSE-MIT | 0 .../README.md | 6 +- .../RELEASES.md | 24 + .../src/lib.rs | 202 +- .../tests/empty_enum.rs | 0 .../vendor/num-derive-0.4.2/tests/issue-16.rs | 11 + .../tests/issue-6.rs | 0 .../tests/issue-9.rs | 0 .../tests/newtype-2015.rs | 0 .../num-derive-0.4.2/tests/newtype-2018.rs | 2 + .../tests/newtype.rs | 21 +- .../tests/no_implicit_prelude.rs | 13 + .../tests/num_derive_without_num.rs | 0 .../tests/trivial-2015.rs | 0 .../num-derive-0.4.2/tests/trivial-2018.rs | 2 + .../tests/trivial.rs | 0 .../tests/with_custom_values.rs | 2 - .../vendor/ripemd-0.1.3/.cargo-checksum.json | 1 - .../vendor/ripemd-0.1.3/.cargo_vcs_info.json | 6 - .../vendor/ripemd-0.1.3/CHANGELOG.md | 30 - .../vendor/ripemd-0.1.3/Cargo.toml | 46 - .../vendor/ripemd-0.1.3/Cargo.toml.orig | 24 - .../vendor/ripemd-0.1.3/LICENSE-APACHE | 201 -- .../vendor/ripemd-0.1.3/LICENSE-MIT | 25 - .../vendor/ripemd-0.1.3/README.md | 56 - .../vendor/ripemd-0.1.3/benches/mod.rs | 38 - .../vendor/ripemd-0.1.3/src/c128.rs | 242 --- .../vendor/ripemd-0.1.3/src/c160.rs | 300 --- .../vendor/ripemd-0.1.3/src/c256.rs | 273 --- .../vendor/ripemd-0.1.3/src/c320.rs | 331 ---- .../vendor/ripemd-0.1.3/src/lib.rs | 186 -- .../ripemd-0.1.3/tests/data/ripemd128.blb | Bin 510 -> 0 bytes .../ripemd-0.1.3/tests/data/ripemd160.blb | Bin 234 -> 0 bytes .../ripemd-0.1.3/tests/data/ripemd256.blb | Bin 516 -> 0 bytes .../ripemd-0.1.3/tests/data/ripemd320.blb | Bin 502 -> 0 bytes .../vendor/ripemd-0.1.3/tests/mod.rs | 112 -- .../.cargo-checksum.json | 1 - .../.cargo_vcs_info.json | 6 - .../serde_ipld_dagcbor-0.2.2/LICENSE-APACHE | 201 -- .../.cargo-checksum.json | 0 .../.cargo_vcs_info.json | 6 + .../.editorconfig | 0 .../.github/dependabot.yml | 6 + .../.github/workflows/build.yml | 26 +- .../.gitignore | 0 .../Cargo.toml | 15 +- .../Cargo.toml.orig | 15 +- .../LICENSE-APACHE | 0 .../LICENSE-MIT | 0 .../README.md | 0 .../examples/readme.rs | 0 .../examples/tux.cbor | 0 .../src/cbor4ii_nonpub.rs | 2 +- .../src/de.rs | 86 +- .../src/error.rs | 2 + .../src/lib.rs | 0 .../src/ser.rs | 11 + .../tests/cid.rs | 0 .../tests/crash.cbor | Bin .../tests/de.rs | 61 +- .../tests/enum.rs | 8 +- .../tests/ipld.rs | 0 .../tests/kietaub.cbor | Bin .../tests/ser.rs | 16 + .../tests/std_types.rs | 6 - .../vendor/sha3-0.10.3/.cargo-checksum.json | 1 - .../vendor/sha3-0.10.3/.cargo_vcs_info.json | 6 - .../vendor/sha3-0.10.3/CHANGELOG.md | 86 - .../vendor/sha3-0.10.3/Cargo.toml | 51 - .../vendor/sha3-0.10.3/Cargo.toml.orig | 25 - .../vendor/sha3-0.10.3/LICENSE-APACHE | 201 -- .../vendor/sha3-0.10.3/LICENSE-MIT | 28 - .../vendor/sha3-0.10.3/README.md | 56 - .../vendor/sha3-0.10.3/benches/mod.rs | 54 - .../vendor/sha3-0.10.3/src/lib.rs | 159 -- .../vendor/sha3-0.10.3/src/macros.rs | 368 ---- .../vendor/sha3-0.10.3/src/state.rs | 33 - .../vendor/sha3-0.10.3/tests/cshake.rs | 145 -- .../sha3-0.10.3/tests/data/cshake128.blb | Bin 165220 -> 0 bytes .../sha3-0.10.3/tests/data/cshake256.blb | Bin 165286 -> 0 bytes .../sha3-0.10.3/tests/data/keccak_224.blb | Bin 31 -> 0 bytes .../sha3-0.10.3/tests/data/keccak_256.blb | Bin 169 -> 0 bytes .../tests/data/keccak_256_full.blb | Bin 3403 -> 0 bytes .../sha3-0.10.3/tests/data/keccak_384.blb | Bin 51 -> 0 bytes .../sha3-0.10.3/tests/data/keccak_512.blb | Bin 68 -> 0 bytes .../sha3-0.10.3/tests/data/sha3_224.blb | Bin 40513 -> 0 bytes .../sha3-0.10.3/tests/data/sha3_256.blb | Bin 41537 -> 0 bytes .../sha3-0.10.3/tests/data/sha3_384.blb | Bin 45583 -> 0 bytes .../sha3-0.10.3/tests/data/sha3_512.blb | Bin 49918 -> 0 bytes .../sha3-0.10.3/tests/data/shake128.blb | Bin 164673 -> 0 bytes .../sha3-0.10.3/tests/data/shake256.blb | Bin 164673 -> 0 bytes .../vendor/sha3-0.10.3/tests/mod.rs | 24 - third_party/rust/cid/{v0_8 => v0_10}/BUILD.gn | 22 +- third_party/rust/cid/v0_10/LICENSE | 20 + .../rust/cid/{v0_8 => v0_10}/README.chromium | 4 +- third_party/rust/cid/v0_8/LICENSE | 21 - third_party/rust/data_encoding/v2/BUILD.gn | 6 +- .../rust/data_encoding/v2/README.chromium | 6 +- .../rust/data_encoding_macro/v0_1/BUILD.gn | 6 +- .../data_encoding_macro/v0_1/README.chromium | 6 +- .../v0_1/BUILD.gn | 6 +- .../v0_1/README.chromium | 6 +- .../{v0_1 => v0_2}/BUILD.gn | 20 +- .../{v0_1 => v0_2}/README.chromium | 6 +- .../fvm_ipld_encoding/{v0_3 => v0_4}/BUILD.gn | 30 +- .../{v0_3 => v0_4}/README.chromium | 6 +- third_party/rust/fvm_shared/v3/BUILD.gn | 92 +- .../rust/fvm_shared/v3/README.chromium | 6 +- .../rust/multihash/{v0_16 => v0_18}/BUILD.gn | 40 +- .../{v0_16 => v0_18}/README.chromium | 6 +- .../rust/num_derive/{v0_3 => v0_4}/BUILD.gn | 15 +- .../num_derive/{v0_3 => v0_4}/README.chromium | 6 +- third_party/rust/ripemd/v0_1/BUILD.gn | 41 - third_party/rust/ripemd/v0_1/README.chromium | 9 - .../{v0_2 => v0_4}/BUILD.gn | 18 +- .../{v0_2 => v0_4}/README.chromium | 6 +- third_party/rust/sha3/v0_10/BUILD.gn | 40 - third_party/rust/sha3/v0_10/README.chromium | 9 - 320 files changed, 1706 insertions(+), 8563 deletions(-) create mode 100644 patches/third_party-rust-bitflags-v2-BUILD.gn.patch delete mode 100644 third_party/rust/bitflags/v1/README.chromium create mode 100644 third_party/rust/bitflags/v2/BUILD.gn delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/.cargo_vcs_info.json delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/.github/workflows/rust.yml delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/.gitignore delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/CHANGELOG.md delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/CODE_OF_CONDUCT.md delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/Cargo.toml delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/Cargo.toml.orig delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/README.md delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/src/example_generated.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/src/lib.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/basic.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/.gitignore delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.stderr.beta delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.stderr.beta delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.stderr.beta delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.stderr.beta delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.stderr.beta delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.stderr.beta delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.stderr.beta delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/impls/convert.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/impls/default.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/impls/inherent_methods.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/core.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/stringify.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/repr/c.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/repr/transparent.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/visibility/bits_field.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/visibility/pub_in.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile.rs rename third_party/rust/chromium_crates_io/vendor/{bitflags-1.3.2 => cid-0.10.1}/.cargo-checksum.json (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/cid-0.10.1/.cargo_vcs_info.json rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => cid-0.10.1}/.github/codecov.yml (100%) rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => cid-0.10.1}/.github/dependabot.yml (100%) rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => cid-0.10.1}/.github/workflows/build.yml (100%) rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => cid-0.10.1}/.gitignore (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/cid-0.10.1/CHANGELOG.md rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => cid-0.10.1}/Cargo.toml (91%) rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => cid-0.10.1}/Cargo.toml.orig (75%) rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => cid-0.10.1}/README.md (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/cid-0.10.1/RELEASE.md rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => cid-0.10.1}/examples/readme.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => cid-0.10.1}/src/arb.rs (76%) rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => cid-0.10.1}/src/cid.rs (90%) rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => cid-0.10.1}/src/error.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => cid-0.10.1}/src/lib.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => cid-0.10.1}/src/serde.rs (99%) rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => cid-0.10.1}/src/version.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => cid-0.10.1}/tests/lib.rs (94%) delete mode 100644 third_party/rust/chromium_crates_io/vendor/cid-0.8.6/.cargo_vcs_info.json delete mode 100644 third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/.cargo_vcs_info.json delete mode 100644 third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/README.md rename third_party/rust/chromium_crates_io/vendor/{cid-0.8.6 => data-encoding-2.6.0}/.cargo-checksum.json (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/.cargo_vcs_info.json rename third_party/rust/chromium_crates_io/vendor/{data-encoding-2.3.3 => data-encoding-2.6.0}/Cargo.toml (91%) rename third_party/rust/chromium_crates_io/vendor/{data-encoding-2.3.3 => data-encoding-2.6.0}/Cargo.toml.orig (77%) rename third_party/rust/chromium_crates_io/vendor/{data-encoding-2.3.3 => data-encoding-2.6.0}/LICENSE (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/README.md rename third_party/rust/chromium_crates_io/vendor/{data-encoding-2.3.3 => data-encoding-2.6.0}/src/lib.rs (90%) delete mode 100644 third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/.cargo_vcs_info.json rename third_party/rust/chromium_crates_io/vendor/{data-encoding-2.3.3 => data-encoding-macro-0.1.15}/.cargo-checksum.json (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/.cargo_vcs_info.json rename third_party/rust/chromium_crates_io/vendor/{data-encoding-macro-0.1.12 => data-encoding-macro-0.1.15}/Cargo.toml (54%) rename third_party/rust/chromium_crates_io/vendor/{data-encoding-macro-0.1.12 => data-encoding-macro-0.1.15}/Cargo.toml.orig (72%) rename third_party/rust/chromium_crates_io/vendor/{data-encoding-macro-0.1.12 => data-encoding-macro-0.1.15}/LICENSE (100%) rename third_party/rust/chromium_crates_io/vendor/{data-encoding-macro-0.1.12 => data-encoding-macro-0.1.15}/README.md (100%) rename third_party/rust/chromium_crates_io/vendor/{data-encoding-macro-0.1.12 => data-encoding-macro-0.1.15}/src/lib.rs (96%) delete mode 100644 third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/.cargo_vcs_info.json rename third_party/rust/chromium_crates_io/vendor/{data-encoding-macro-0.1.12 => data-encoding-macro-internal-0.1.13}/.cargo-checksum.json (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/.cargo_vcs_info.json rename third_party/rust/chromium_crates_io/vendor/{data-encoding-macro-internal-0.1.10 => data-encoding-macro-internal-0.1.13}/Cargo.toml (58%) rename third_party/rust/chromium_crates_io/vendor/{data-encoding-macro-internal-0.1.10 => data-encoding-macro-internal-0.1.13}/Cargo.toml.orig (58%) rename third_party/rust/chromium_crates_io/vendor/{data-encoding-macro-internal-0.1.10 => data-encoding-macro-internal-0.1.13}/LICENSE (100%) rename third_party/rust/chromium_crates_io/vendor/{data-encoding-macro-internal-0.1.10 => data-encoding-macro-internal-0.1.13}/README.md (100%) rename third_party/rust/chromium_crates_io/vendor/{data-encoding-macro-internal-0.1.10 => data-encoding-macro-internal-0.1.13}/src/lib.rs (84%) delete mode 100644 third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/.cargo_vcs_info.json delete mode 100644 third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/CHANGELOG.md rename third_party/rust/chromium_crates_io/vendor/{data-encoding-macro-internal-0.1.10 => fvm_ipld_blockstore-0.2.1}/.cargo-checksum.json (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/.cargo_vcs_info.json create mode 100644 third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/CHANGELOG.md rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_blockstore-0.1.1 => fvm_ipld_blockstore-0.2.1}/Cargo.toml (91%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_blockstore-0.1.1 => fvm_ipld_blockstore-0.2.1}/Cargo.toml.orig (65%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_blockstore-0.1.1 => fvm_ipld_blockstore-0.2.1}/src/block.rs (51%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_blockstore-0.1.1 => fvm_ipld_blockstore-0.2.1}/src/lib.rs (56%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_blockstore-0.1.1 => fvm_ipld_blockstore-0.2.1}/src/memory.rs (69%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_blockstore-0.1.1 => fvm_ipld_blockstore-0.2.1}/src/tracking.rs (97%) delete mode 100644 third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/.cargo_vcs_info.json rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_blockstore-0.1.1 => fvm_ipld_encoding-0.4.0}/.cargo-checksum.json (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/.cargo_vcs_info.json rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_encoding-0.3.3 => fvm_ipld_encoding-0.4.0}/CHANGELOG.md (88%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_encoding-0.3.3 => fvm_ipld_encoding-0.4.0}/Cargo.toml (90%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_encoding-0.3.3 => fvm_ipld_encoding-0.4.0}/Cargo.toml.orig (62%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_encoding-0.3.3 => fvm_ipld_encoding-0.4.0}/src/bytes.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_encoding-0.3.3 => fvm_ipld_encoding-0.4.0}/src/cbor.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_encoding-0.3.3 => fvm_ipld_encoding-0.4.0}/src/cbor_store.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_encoding-0.3.3 => fvm_ipld_encoding-0.4.0}/src/errors.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_encoding-0.3.3 => fvm_ipld_encoding-0.4.0}/src/ipld_block.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_encoding-0.3.3 => fvm_ipld_encoding-0.4.0}/src/lib.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_encoding-0.3.3 => fvm_ipld_encoding-0.4.0}/src/raw.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_encoding-0.3.3 => fvm_ipld_encoding-0.4.0}/src/vec.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_ipld_encoding-0.3.3 => fvm_shared-3.10.0}/.cargo-checksum.json (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/.cargo_vcs_info.json rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/CHANGELOG.md (85%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/Cargo.toml (86%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/Cargo.toml.orig (57%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/address/errors.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/address/mod.rs (98%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/address/network.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/address/payload.rs (91%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/address/protocol.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/bigint/bigint_ser.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/bigint/biguint_ser.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/bigint/mod.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/chainid/mod.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/clock/mod.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/clock/quantize.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/commcid/mod.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/consensus/mod.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/crypto/hash.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/crypto/mod.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/crypto/signature.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/deal/mod.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/econ/mod.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/error/mod.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/event/mod.rs (94%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/lib.rs (94%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/math.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/message.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/piece/mod.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/piece/zero.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/randomness/mod.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/receipt.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/reward.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/sector/mod.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/sector/post.rs (88%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/sector/registered_proof.rs (74%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/sector/seal.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/smooth/alpha_beta_filter.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/smooth/mod.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/smooth/smooth_func.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/state/mod.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/sys/mod.rs (98%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/sys/out.rs (98%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/src/version/mod.rs (96%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/tests/address_test.rs (98%) rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => fvm_shared-3.10.0}/tests/commcid_tests.rs (100%) delete mode 100644 third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/.cargo_vcs_info.json delete mode 100644 third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.cargo_vcs_info.json delete mode 100644 third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.envrc delete mode 100644 third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.github/workflows/nix.yml delete mode 100644 third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/Cargo.lock delete mode 100644 third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/flake.lock delete mode 100644 third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/flake.nix rename third_party/rust/chromium_crates_io/vendor/{fvm_shared-3.3.0 => multihash-0.18.1}/.cargo-checksum.json (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/.cargo_vcs_info.json rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/.github/codecov.yml (100%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/.github/dependabot.yml (100%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/.github/workflows/build.yml (100%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/.gitignore (62%) create mode 100644 third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/CHANGELOG.md rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/Cargo.toml (95%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/Cargo.toml.orig (92%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/LICENSE (100%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/README.md (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/RELEASE.md rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/benches/multihash.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/examples/custom_table.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/examples/manual_mh.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/rustfmt.toml (100%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/src/arb.rs (71%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/src/error.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/src/hasher.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/src/hasher_impl.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/src/lib.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/src/multihash.rs (90%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/src/multihash_impl.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => multihash-0.18.1}/tests/lib.rs (99%) delete mode 100644 third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/.cargo_vcs_info.json delete mode 100644 third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/LICENSE-MIT delete mode 100644 third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/src/test.rs rename third_party/rust/chromium_crates_io/vendor/{multihash-0.16.3 => num-derive-0.4.2}/.cargo-checksum.json (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/.cargo_vcs_info.json rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => num-derive-0.4.2}/.gitignore (100%) rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => num-derive-0.4.2}/Cargo.toml (65%) rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => num-derive-0.4.2}/Cargo.toml.orig (72%) rename third_party/rust/chromium_crates_io/vendor/{bitflags-1.3.2 => num-derive-0.4.2}/LICENSE-APACHE (100%) rename third_party/rust/chromium_crates_io/vendor/{bitflags-1.3.2 => num-derive-0.4.2}/LICENSE-MIT (100%) rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => num-derive-0.4.2}/README.md (92%) rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => num-derive-0.4.2}/RELEASES.md (80%) rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => num-derive-0.4.2}/src/lib.rs (83%) rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => num-derive-0.4.2}/tests/empty_enum.rs (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/issue-16.rs rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => num-derive-0.4.2}/tests/issue-6.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => num-derive-0.4.2}/tests/issue-9.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => num-derive-0.4.2}/tests/newtype-2015.rs (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/newtype-2018.rs rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => num-derive-0.4.2}/tests/newtype.rs (80%) create mode 100644 third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/no_implicit_prelude.rs rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => num-derive-0.4.2}/tests/num_derive_without_num.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => num-derive-0.4.2}/tests/trivial-2015.rs (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/trivial-2018.rs rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => num-derive-0.4.2}/tests/trivial.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => num-derive-0.4.2}/tests/with_custom_values.rs (98%) delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/.cargo-checksum.json delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/.cargo_vcs_info.json delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/CHANGELOG.md delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/Cargo.toml delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/Cargo.toml.orig delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/LICENSE-APACHE delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/LICENSE-MIT delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/README.md delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/benches/mod.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c128.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c160.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c256.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c320.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/lib.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/tests/data/ripemd128.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/tests/data/ripemd160.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/tests/data/ripemd256.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/tests/data/ripemd320.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/tests/mod.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/.cargo-checksum.json delete mode 100644 third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/.cargo_vcs_info.json delete mode 100644 third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/LICENSE-APACHE rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => serde_ipld_dagcbor-0.4.2}/.cargo-checksum.json (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/.cargo_vcs_info.json rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/.editorconfig (100%) create mode 100644 third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/.github/dependabot.yml rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/.github/workflows/build.yml (57%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/.gitignore (100%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/Cargo.toml (89%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/Cargo.toml.orig (57%) rename third_party/rust/chromium_crates_io/vendor/{num-derive-0.3.3 => serde_ipld_dagcbor-0.4.2}/LICENSE-APACHE (100%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/LICENSE-MIT (100%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/README.md (100%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/examples/readme.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/examples/tux.cbor (100%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/src/cbor4ii_nonpub.rs (94%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/src/de.rs (91%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/src/error.rs (98%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/src/lib.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/src/ser.rs (97%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/tests/cid.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/tests/crash.cbor (100%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/tests/de.rs (87%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/tests/enum.rs (90%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/tests/ipld.rs (100%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/tests/kietaub.cbor (100%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/tests/ser.rs (83%) rename third_party/rust/chromium_crates_io/vendor/{serde_ipld_dagcbor-0.2.2 => serde_ipld_dagcbor-0.4.2}/tests/std_types.rs (97%) delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/.cargo-checksum.json delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/.cargo_vcs_info.json delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/CHANGELOG.md delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/Cargo.toml delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/Cargo.toml.orig delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/LICENSE-APACHE delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/LICENSE-MIT delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/README.md delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/benches/mod.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/src/lib.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/src/macros.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/src/state.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/cshake.rs delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/cshake128.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/cshake256.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/keccak_224.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/keccak_256.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/keccak_256_full.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/keccak_384.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/keccak_512.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/sha3_224.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/sha3_256.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/sha3_384.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/sha3_512.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/shake128.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/shake256.blb delete mode 100644 third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/mod.rs rename third_party/rust/cid/{v0_8 => v0_10}/BUILD.gn (71%) create mode 100644 third_party/rust/cid/v0_10/LICENSE rename third_party/rust/cid/{v0_8 => v0_10}/README.chromium (66%) delete mode 100644 third_party/rust/cid/v0_8/LICENSE rename third_party/rust/fvm_ipld_blockstore/{v0_1 => v0_2}/BUILD.gn (82%) rename third_party/rust/fvm_ipld_blockstore/{v0_1 => v0_2}/README.chromium (64%) rename third_party/rust/fvm_ipld_encoding/{v0_3 => v0_4}/BUILD.gn (78%) rename third_party/rust/fvm_ipld_encoding/{v0_3 => v0_4}/README.chromium (63%) rename third_party/rust/multihash/{v0_16 => v0_18}/BUILD.gn (74%) rename third_party/rust/multihash/{v0_16 => v0_18}/README.chromium (70%) rename third_party/rust/num_derive/{v0_3 => v0_4}/BUILD.gn (79%) rename third_party/rust/num_derive/{v0_3 => v0_4}/README.chromium (68%) delete mode 100644 third_party/rust/ripemd/v0_1/BUILD.gn delete mode 100644 third_party/rust/ripemd/v0_1/README.chromium rename third_party/rust/serde_ipld_dagcbor/{v0_2 => v0_4}/BUILD.gn (85%) rename third_party/rust/serde_ipld_dagcbor/{v0_2 => v0_4}/README.chromium (69%) delete mode 100644 third_party/rust/sha3/v0_10/BUILD.gn delete mode 100644 third_party/rust/sha3/v0_10/README.chromium diff --git a/components/filecoin/rs/BUILD.gn b/components/filecoin/rs/BUILD.gn index 49e655bb0892..09c5028b15f6 100644 --- a/components/filecoin/rs/BUILD.gn +++ b/components/filecoin/rs/BUILD.gn @@ -19,12 +19,12 @@ rust_static_library("rust_lib") { deps = [ "//brave/third_party/rust/blake2b_simd/v1:lib", "//brave/third_party/rust/bls_signatures/v0_12:lib", - "//brave/third_party/rust/cid/v0_8:lib", + "//brave/third_party/rust/cid/v0_10:lib", "//brave/third_party/rust/forest_bigint/v0_1:lib", - "//brave/third_party/rust/fvm_ipld_encoding/v0_3:lib", + "//brave/third_party/rust/fvm_ipld_encoding/v0_4:lib", "//brave/third_party/rust/fvm_shared/v3:lib", "//brave/third_party/rust/libsecp256k1/v0_7:lib", - "//brave/third_party/rust/multihash/v0_16:lib", + "//brave/third_party/rust/multihash/v0_18:lib", "//brave/third_party/rust/thiserror/v1:lib", "//third_party/rust/base64/v0_13:lib", "//third_party/rust/serde/v1:lib", diff --git a/components/filecoin/rs/Cargo.toml b/components/filecoin/rs/Cargo.toml index 403b52159b85..7237affaa2c8 100644 --- a/components/filecoin/rs/Cargo.toml +++ b/components/filecoin/rs/Cargo.toml @@ -9,16 +9,16 @@ license = "MPL-2.0" base64 = "0.13.0" bls-signatures = { version = "0.12", default-features = false, features = ["pairing"] } cxx = "1" -fvm_shared = { version = "3.3.0" } +fvm_shared = { version = "3.10.0" } libsecp256k1 = "0.7" num_bigint_chainsafe = { package = "forest_bigint", version = "0.1.2"} serde = { version = "^1.0.117", features = ["derive"] } serde_json = "^1.0.59" thiserror = "^1.0.30" blake2b_simd = "1" -cid = { version = "0.8.5", default-features = false } -multihash = { version="0.16.3", default-features = false, features = [ "multihash-impl", "blake2b"] } -fvm_ipld_encoding = "0.3" +cid = { version = "0.10", default-features = false } +multihash = { version = "0.18.0", default-features = false, features = [ "multihash-impl", "blake2b"] } +fvm_ipld_encoding = "0.4" [lib] name = "filecoin_cxx" diff --git a/patches/third_party-rust-bitflags-v2-BUILD.gn.patch b/patches/third_party-rust-bitflags-v2-BUILD.gn.patch new file mode 100644 index 000000000000..3aa05770fd42 --- /dev/null +++ b/patches/third_party-rust-bitflags-v2-BUILD.gn.patch @@ -0,0 +1,10 @@ +diff --git a/third_party/rust/bitflags/v2/BUILD.gn b/third_party/rust/bitflags/v2/BUILD.gn +index f52c4678d14fa0b3b50610f1ee0fb59338189c7e..f5140efd3848d6ad55693edc295de074b44caf22 100644 +--- a/third_party/rust/bitflags/v2/BUILD.gn ++++ b/third_party/rust/bitflags/v2/BUILD.gn +@@ -67,4 +67,5 @@ cargo_crate("lib") { + executable_configs += [ "//build/config/compiler:no_chromium_code" ] + proc_macro_configs -= [ "//build/config/compiler:chromium_code" ] + proc_macro_configs += [ "//build/config/compiler:no_chromium_code" ] ++ deps = [ "//third_party/rust/serde/v1:lib" ] features = [ "serde" ] + } diff --git a/script/brave_license_helper.py b/script/brave_license_helper.py index dab8f92548df..6702536ffd67 100644 --- a/script/brave_license_helper.py +++ b/script/brave_license_helper.py @@ -59,6 +59,7 @@ def AddBraveCredits(root, prune_paths, special_cases, prune_dirs, os.path.join('brave', 'third_party', 'rust', 'aho_corasick'), os.path.join('brave', 'third_party', 'rust', 'anyhow'), os.path.join('brave', 'third_party', 'rust', 'base64'), + os.path.join('brave', 'third_party', 'rust', 'bitflags'), os.path.join('brave', 'third_party', 'rust', 'cfg_if'), os.path.join('brave', 'third_party', 'rust', 'cxx'), os.path.join('brave', 'third_party', 'rust', 'cxxbridge_flags'), diff --git a/third_party/rust/bitflags/v1/BUILD.gn b/third_party/rust/bitflags/v1/BUILD.gn index 0ebfc2c296db..ba8b668a98e0 100644 --- a/third_party/rust/bitflags/v1/BUILD.gn +++ b/third_party/rust/bitflags/v1/BUILD.gn @@ -3,34 +3,6 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this file, # You can obtain one at https://mozilla.org/MPL/2.0/. -# @generated from third_party/rust/chromium_crates_io/BUILD.gn.hbs by -# tools/crates/gnrt. -# Do not edit! - -import("//build/rust/cargo_crate.gni") - -cargo_crate("lib") { - crate_name = "bitflags" - epoch = "1" - crate_type = "rlib" - crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/src/lib.rs" - sources = [ - "//brave/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/src/example_generated.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/src/lib.rs", - ] - inputs = [] - - build_native_rust_unit_tests = false - edition = "2018" - cargo_pkg_version = "1.3.2" - cargo_pkg_authors = "The Rust Project Developers" - cargo_pkg_name = "bitflags" - cargo_pkg_description = - "A macro to generate structures which behave like bitflags." - library_configs -= [ "//build/config/compiler:chromium_code" ] - library_configs += [ "//build/config/compiler:no_chromium_code" ] - executable_configs -= [ "//build/config/compiler:chromium_code" ] - executable_configs += [ "//build/config/compiler:no_chromium_code" ] - proc_macro_configs -= [ "//build/config/compiler:chromium_code" ] - proc_macro_configs += [ "//build/config/compiler:no_chromium_code" ] +group("lib") { + public_deps = [ "//third_party/rust/bitflags/v1:lib" ] } diff --git a/third_party/rust/bitflags/v1/README.chromium b/third_party/rust/bitflags/v1/README.chromium deleted file mode 100644 index 0f0829502d38..000000000000 --- a/third_party/rust/bitflags/v1/README.chromium +++ /dev/null @@ -1,10 +0,0 @@ -Name: bitflags -URL: https://crates.io/crates/bitflags -Description: A macro to generate structures which behave like bitflags. - -Version: 1.3.2 -Security Critical: yes -Shipped: yes -License: Apache 2.0 -License File: //brave/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/LICENSE-APACHE -Revision: ed185cfb1c447c1b4bd6ac021c9ec3bb02c9e2f2 diff --git a/third_party/rust/bitflags/v2/BUILD.gn b/third_party/rust/bitflags/v2/BUILD.gn new file mode 100644 index 000000000000..d37afeb4deee --- /dev/null +++ b/third_party/rust/bitflags/v2/BUILD.gn @@ -0,0 +1,8 @@ +# Copyright (c) 2024 The Brave Authors. All rights reserved. +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at https://mozilla.org/MPL/2.0/. + +group("lib") { + public_deps = [ "//third_party/rust/bitflags/v2:lib" ] +} diff --git a/third_party/rust/chromium_crates_io/Cargo.lock b/third_party/rust/chromium_crates_io/Cargo.lock index b12533faea5f..49099c375647 100644 --- a/third_party/rust/chromium_crates_io/Cargo.lock +++ b/third_party/rust/chromium_crates_io/Cargo.lock @@ -8,7 +8,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64", - "bitflags", + "bitflags 1.3.2", "cssparser 0.28.1", "idna 0.2.3", "itertools", @@ -179,7 +179,13 @@ dependencies = [ [[package]] name = "bitflags" version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bitflags" +version = "2.6.0" +dependencies = [ + "serde", +] [[package]] name = "bitvec" @@ -404,7 +410,7 @@ dependencies = [ [[package]] name = "cid" -version = "0.8.6" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core2", @@ -594,12 +600,12 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.3.3" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "data-encoding-macro" -version = "0.1.12" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "data-encoding", @@ -608,7 +614,7 @@ dependencies = [ [[package]] name = "data-encoding-macro-internal" -version = "0.1.10" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "data-encoding", @@ -952,7 +958,7 @@ dependencies = [ [[package]] name = "fvm_ipld_blockstore" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "anyhow", @@ -962,7 +968,7 @@ dependencies = [ [[package]] name = "fvm_ipld_encoding" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "anyhow", @@ -978,11 +984,11 @@ dependencies = [ [[package]] name = "fvm_shared" -version = "3.3.0" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "anyhow", - "bitflags", + "bitflags 2.6.0", "blake2b_simd", "cid", "data-encoding", @@ -1403,7 +1409,7 @@ name = "lol_html" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cfg-if", "cssparser 0.27.2", "encoding_rs", @@ -1476,18 +1482,14 @@ dependencies = [ [[package]] name = "multihash" -version = "0.16.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "blake2b_simd", "core2", - "digest 0.10.7", "multihash-derive", - "ripemd", "serde", "serde-big-array", - "sha2 0.10.8", - "sha3", "unsigned-varint", ] @@ -1556,12 +1558,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "num-derive" -version = "0.3.3" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.74", ] [[package]] @@ -1955,7 +1957,7 @@ dependencies = [ name = "readability" version = "0.1.4" dependencies = [ - "bitflags", + "bitflags 1.3.2", "html5ever", "kuchikiki", "lazy_static", @@ -1988,7 +1990,7 @@ name = "redox_syscall" version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -2014,14 +2016,6 @@ dependencies = [ name = "regex-syntax" version = "0.8.4" -[[package]] -name = "ripemd" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "digest 0.10.7", -] - [[package]] name = "rmp" version = "0.8.11" @@ -2073,7 +2067,7 @@ name = "selectors" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cssparser 0.27.2", "derive_more", "fxhash", @@ -2092,7 +2086,7 @@ name = "selectors" version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cssparser 0.28.1", "derive_more", "fxhash", @@ -2142,7 +2136,7 @@ dependencies = [ [[package]] name = "serde_ipld_dagcbor" -version = "0.2.2" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cbor4ii", @@ -2221,15 +2215,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "sha3" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "digest 0.10.7", - "keccak", -] - [[package]] name = "sharded-slab" version = "0.1.4" @@ -2416,7 +2401,7 @@ name = "strobe-rs" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags", + "bitflags 1.3.2", "byteorder", "keccak", "subtle", diff --git a/third_party/rust/chromium_crates_io/Cargo.toml b/third_party/rust/chromium_crates_io/Cargo.toml index 811b5a45c388..5e54c497232c 100644 --- a/third_party/rust/chromium_crates_io/Cargo.toml +++ b/third_party/rust/chromium_crates_io/Cargo.toml @@ -91,6 +91,14 @@ package = "anyhow" path = "../../../../third_party/rust/chromium_crates_io/vendor/base64-0.13.1" package = "base64" +[patch.crates-io.bitflags_v1] +path = "../../../../third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2" +package = "bitflags" + +[patch.crates-io.bitflags_v2] +path = "../../../../third_party/rust/chromium_crates_io/vendor/bitflags-2.6.0" +package = "bitflags" + [patch.crates-io.cfg-if_v1] path = "../../../../third_party/rust/chromium_crates_io/vendor/cfg-if-1.0.0" package = "cfg-if" diff --git a/third_party/rust/chromium_crates_io/gnrt_config.toml b/third_party/rust/chromium_crates_io/gnrt_config.toml index 2408c533b805..261f3092cc11 100644 --- a/third_party/rust/chromium_crates_io/gnrt_config.toml +++ b/third_party/rust/chromium_crates_io/gnrt_config.toml @@ -285,7 +285,7 @@ extra_build_script_src_roots = [ "entities.rs" ] build_script_outputs = [ "generated.rs", "named_entities.rs", ] [crate.multihash] -extra_kv = { rustenv = [ "CARGO_MANIFEST_DIR=\" + rebase_path(\"//brave/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3\") + \"" ]} +extra_kv = { rustenv = [ "CARGO_MANIFEST_DIR=\" + rebase_path(\"//brave/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1\") + \"" ]} [crate.num-bigint] extra_input_roots = [ "../README.md" ] diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/.cargo_vcs_info.json deleted file mode 100644 index 8e82c01fc941..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/.cargo_vcs_info.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "git": { - "sha1": "ed185cfb1c447c1b4bd6ac021c9ec3bb02c9e2f2" - } -} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/.github/workflows/rust.yml b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/.github/workflows/rust.yml deleted file mode 100644 index ffe0edad1b3d..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/.github/workflows/rust.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Rust - -on: [push, pull_request] - -env: - CARGO_TERM_COLOR: always - -jobs: - check: - name: Test - runs-on: ubuntu-latest - strategy: - fail-fast: true - matrix: - rust: - - stable - - beta - - nightly - - 1.46.0 - steps: - - name: Checkout sources - uses: actions/checkout@v2 - - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: ${{ matrix.rust }} - override: true - - - name: Default features - uses: actions-rs/cargo@v1 - with: - command: test - args: --features example_generated - - embedded: - name: Build (embedded) - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v2 - - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: nightly - target: thumbv6m-none-eabi - override: true - - - name: Default features - uses: actions-rs/cargo@v1 - with: - command: build - args: -Z avoid-dev-deps --features example_generated --target thumbv6m-none-eabi diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/.gitignore b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/.gitignore deleted file mode 100644 index 61c33314e6d9..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -wip -target -Cargo.lock - -/.idea/ diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/CHANGELOG.md b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/CHANGELOG.md deleted file mode 100644 index 12fea1673ac3..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/CHANGELOG.md +++ /dev/null @@ -1,206 +0,0 @@ -# 1.3.2 - -- Allow `non_snake_case` in generated flags types ([#256]) - -[#252]: https://github.com/bitflags/bitflags/pull/256 - -# 1.3.1 - -- Revert unconditional `#[repr(transparent)]` ([#252]) - -[#252]: https://github.com/bitflags/bitflags/pull/252 - -# 1.3.0 (yanked) - -- Add `#[repr(transparent)]` ([#187]) - -- End `empty` doc comment with full stop ([#202]) - -- Fix typo in crate root docs ([#206]) - -- Document from_bits_unchecked unsafety ([#207]) - -- Let `is_all` ignore extra bits ([#211]) - -- Allows empty flag definition ([#225]) - -- Making crate accessible from std ([#227]) - -- Make `from_bits` a const fn ([#229]) - -- Allow multiple bitflags structs in one macro invocation ([#235]) - -- Add named functions to perform set operations ([#244]) - -- Fix typos in method docs ([#245]) - -- Modernization of the `bitflags` macro to take advantage of newer features and 2018 idioms ([#246]) - -- Fix regression (in an unreleased feature) and simplify tests ([#247]) - -- Use `Self` and fix bug when overriding `stringify!` ([#249]) - -[#187]: https://github.com/bitflags/bitflags/pull/187 -[#202]: https://github.com/bitflags/bitflags/pull/202 -[#206]: https://github.com/bitflags/bitflags/pull/206 -[#207]: https://github.com/bitflags/bitflags/pull/207 -[#211]: https://github.com/bitflags/bitflags/pull/211 -[#225]: https://github.com/bitflags/bitflags/pull/225 -[#227]: https://github.com/bitflags/bitflags/pull/227 -[#229]: https://github.com/bitflags/bitflags/pull/229 -[#235]: https://github.com/bitflags/bitflags/pull/235 -[#244]: https://github.com/bitflags/bitflags/pull/244 -[#245]: https://github.com/bitflags/bitflags/pull/245 -[#246]: https://github.com/bitflags/bitflags/pull/246 -[#247]: https://github.com/bitflags/bitflags/pull/247 -[#249]: https://github.com/bitflags/bitflags/pull/249 - -# 1.2.1 - -- Remove extraneous `#[inline]` attributes ([#194]) - -[#194]: https://github.com/bitflags/bitflags/pull/194 - -# 1.2.0 - -- Fix typo: {Lower, Upper}Exp - {Lower, Upper}Hex ([#183]) - -- Add support for "unknown" bits ([#188]) - -[#183]: https://github.com/rust-lang-nursery/bitflags/pull/183 -[#188]: https://github.com/rust-lang-nursery/bitflags/pull/188 - -# 1.1.0 - -This is a re-release of `1.0.5`, which was yanked due to a bug in the RLS. - -# 1.0.5 - -- Use compiletest_rs flags supported by stable toolchain ([#171]) - -- Put the user provided attributes first ([#173]) - -- Make bitflags methods `const` on newer compilers ([#175]) - -[#171]: https://github.com/rust-lang-nursery/bitflags/pull/171 -[#173]: https://github.com/rust-lang-nursery/bitflags/pull/173 -[#175]: https://github.com/rust-lang-nursery/bitflags/pull/175 - -# 1.0.4 - -- Support Rust 2018 style macro imports ([#165]) - - ```rust - use bitflags::bitflags; - ``` - -[#165]: https://github.com/rust-lang-nursery/bitflags/pull/165 - -# 1.0.3 - -- Improve zero value flag handling and documentation ([#157]) - -[#157]: https://github.com/rust-lang-nursery/bitflags/pull/157 - -# 1.0.2 - -- 30% improvement in compile time of bitflags crate ([#156]) - -- Documentation improvements ([#153]) - -- Implementation cleanup ([#149]) - -[#156]: https://github.com/rust-lang-nursery/bitflags/pull/156 -[#153]: https://github.com/rust-lang-nursery/bitflags/pull/153 -[#149]: https://github.com/rust-lang-nursery/bitflags/pull/149 - -# 1.0.1 -- Add support for `pub(restricted)` specifier on the bitflags struct ([#135]) -- Optimize performance of `all()` when called from a separate crate ([#136]) - -[#135]: https://github.com/rust-lang-nursery/bitflags/pull/135 -[#136]: https://github.com/rust-lang-nursery/bitflags/pull/136 - -# 1.0.0 -- **[breaking change]** Macro now generates [associated constants](https://doc.rust-lang.org/reference/items.html#associated-constants) ([#24]) - -- **[breaking change]** Minimum supported version is Rust **1.20**, due to usage of associated constants - -- After being broken in 0.9, the `#[deprecated]` attribute is now supported again ([#112]) - -- Other improvements to unit tests and documentation ([#106] and [#115]) - -[#24]: https://github.com/rust-lang-nursery/bitflags/pull/24 -[#106]: https://github.com/rust-lang-nursery/bitflags/pull/106 -[#112]: https://github.com/rust-lang-nursery/bitflags/pull/112 -[#115]: https://github.com/rust-lang-nursery/bitflags/pull/115 - -## How to update your code to use associated constants -Assuming the following structure definition: -```rust -bitflags! { - struct Something: u8 { - const FOO = 0b01, - const BAR = 0b10 - } -} -``` -In 0.9 and older you could do: -```rust -let x = FOO.bits | BAR.bits; -``` -Now you must use: -```rust -let x = Something::FOO.bits | Something::BAR.bits; -``` - -# 0.9.1 -- Fix the implementation of `Formatting` traits when other formatting traits were present in scope ([#105]) - -[#105]: https://github.com/rust-lang-nursery/bitflags/pull/105 - -# 0.9.0 -- **[breaking change]** Use struct keyword instead of flags to define bitflag types ([#84]) - -- **[breaking change]** Terminate const items with semicolons instead of commas ([#87]) - -- Implement the `Hex`, `Octal`, and `Binary` formatting traits ([#86]) - -- Printing an empty flag value with the `Debug` trait now prints "(empty)" instead of nothing ([#85]) - -- The `bitflags!` macro can now be used inside of a fn body, to define a type local to that function ([#74]) - -[#74]: https://github.com/rust-lang-nursery/bitflags/pull/74 -[#84]: https://github.com/rust-lang-nursery/bitflags/pull/84 -[#85]: https://github.com/rust-lang-nursery/bitflags/pull/85 -[#86]: https://github.com/rust-lang-nursery/bitflags/pull/86 -[#87]: https://github.com/rust-lang-nursery/bitflags/pull/87 - -# 0.8.2 -- Update feature flag used when building bitflags as a dependency of the Rust toolchain - -# 0.8.1 -- Allow bitflags to be used as a dependency of the Rust toolchain - -# 0.8.0 -- Add support for the experimental `i128` and `u128` integer types ([#57]) -- Add set method: `flags.set(SOME_FLAG, true)` or `flags.set(SOME_FLAG, false)` ([#55]) - This may break code that defines its own set method - -[#55]: https://github.com/rust-lang-nursery/bitflags/pull/55 -[#57]: https://github.com/rust-lang-nursery/bitflags/pull/57 - -# 0.7.1 -*(yanked)* - -# 0.7.0 -- Implement the Extend trait ([#49]) -- Allow definitions inside the `bitflags!` macro to refer to items imported from other modules ([#51]) - -[#49]: https://github.com/rust-lang-nursery/bitflags/pull/49 -[#51]: https://github.com/rust-lang-nursery/bitflags/pull/51 - -# 0.6.0 -- The `no_std` feature was removed as it is now the default -- The `assignment_operators` feature was remove as it is now enabled by default -- Some clippy suggestions have been applied diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/CODE_OF_CONDUCT.md b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/CODE_OF_CONDUCT.md deleted file mode 100644 index f7add90ae355..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,73 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -education, socio-economic status, nationality, personal appearance, race, -religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at coc@senaite.org. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/Cargo.toml deleted file mode 100644 index 9d54c725a1c5..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/Cargo.toml +++ /dev/null @@ -1,58 +0,0 @@ -# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO -# -# When uploading crates to the registry Cargo will automatically -# "normalize" Cargo.toml files for maximal compatibility -# with all versions of Cargo and also rewrite `path` dependencies -# to registry (e.g., crates.io) dependencies -# -# If you believe there's an error in this file please file an -# issue against the rust-lang/cargo repository. If you're -# editing this file be aware that the upstream Cargo.toml -# will likely look very different (and much more reasonable) - -[package] -edition = "2018" -name = "bitflags" -version = "1.3.2" -authors = ["The Rust Project Developers"] -exclude = ["bors.toml"] -description = "A macro to generate structures which behave like bitflags.\n" -homepage = "https://github.com/bitflags/bitflags" -documentation = "https://docs.rs/bitflags" -readme = "README.md" -keywords = ["bit", "bitmask", "bitflags", "flags"] -categories = ["no-std"] -license = "MIT/Apache-2.0" -repository = "https://github.com/bitflags/bitflags" -[package.metadata.docs.rs] -features = ["example_generated"] -[dependencies.compiler_builtins] -version = "0.1.2" -optional = true - -[dependencies.core] -version = "1.0.0" -optional = true -package = "rustc-std-workspace-core" -[dev-dependencies.rustversion] -version = "1.0" - -[dev-dependencies.serde] -version = "1.0" - -[dev-dependencies.serde_derive] -version = "1.0" - -[dev-dependencies.serde_json] -version = "1.0" - -[dev-dependencies.trybuild] -version = "1.0" - -[dev-dependencies.walkdir] -version = "2.3" - -[features] -default = [] -example_generated = [] -rustc-dep-of-std = ["core", "compiler_builtins"] diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/Cargo.toml.orig deleted file mode 100644 index be9e05ada459..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/Cargo.toml.orig +++ /dev/null @@ -1,39 +0,0 @@ -[package] -name = "bitflags" -# NB: When modifying, also modify: -# 1. html_root_url in lib.rs -# 2. number in readme (for breaking changes) -version = "1.3.2" -edition = "2018" -authors = ["The Rust Project Developers"] -license = "MIT/Apache-2.0" -keywords = ["bit", "bitmask", "bitflags", "flags"] -readme = "README.md" -repository = "https://github.com/bitflags/bitflags" -homepage = "https://github.com/bitflags/bitflags" -documentation = "https://docs.rs/bitflags" -categories = ["no-std"] -description = """ -A macro to generate structures which behave like bitflags. -""" -exclude = ["bors.toml"] - -[dependencies] -core = { version = '1.0.0', optional = true, package = 'rustc-std-workspace-core' } -compiler_builtins = { version = '0.1.2', optional = true } - -[dev-dependencies] -trybuild = "1.0" -rustversion = "1.0" -walkdir = "2.3" -serde = "1.0" -serde_derive = "1.0" -serde_json = "1.0" - -[features] -default = [] -example_generated = [] -rustc-dep-of-std = ["core", "compiler_builtins"] - -[package.metadata.docs.rs] -features = ["example_generated"] diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/README.md b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/README.md deleted file mode 100644 index 0da0f853661b..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/README.md +++ /dev/null @@ -1,32 +0,0 @@ -bitflags -======== - -[![Rust](https://github.com/bitflags/bitflags/workflows/Rust/badge.svg)](https://github.com/bitflags/bitflags/actions) -[![Join the chat at https://gitter.im/bitflags/Lobby](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/bitflags/Lobby?utm_source=badge&utm_medium=badge&utm_content=badge) -[![Latest version](https://img.shields.io/crates/v/bitflags.svg)](https://crates.io/crates/bitflags) -[![Documentation](https://docs.rs/bitflags/badge.svg)](https://docs.rs/bitflags) -![License](https://img.shields.io/crates/l/bitflags.svg) - -A Rust macro to generate structures which behave like a set of bitflags - -- [Documentation](https://docs.rs/bitflags) -- [Release notes](https://github.com/bitflags/bitflags/releases) - -## Usage - -Add this to your `Cargo.toml`: - -```toml -[dependencies] -bitflags = "1.3" -``` - -and this to your source code: - -```rust -use bitflags::bitflags; -``` - -## Rust Version Support - -The minimum supported Rust version is 1.46 due to use of associated constants and const functions. diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/src/example_generated.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/src/example_generated.rs deleted file mode 100644 index cf188d99cb4c..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/src/example_generated.rs +++ /dev/null @@ -1,14 +0,0 @@ -//! This module shows an example of code generated by the macro. **IT MUST NOT BE USED OUTSIDE THIS -//! CRATE**. - -bitflags! { - /// This is the same `Flags` struct defined in the [crate level example](../index.html#example). - /// Note that this struct is just for documentation purposes only, it must not be used outside - /// this crate. - pub struct Flags: u32 { - const A = 0b00000001; - const B = 0b00000010; - const C = 0b00000100; - const ABC = Self::A.bits | Self::B.bits | Self::C.bits; - } -} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/src/lib.rs deleted file mode 100644 index 935e432f1701..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/src/lib.rs +++ /dev/null @@ -1,1729 +0,0 @@ -// Copyright 2014 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -//! A typesafe bitmask flag generator useful for sets of C-style bitmask flags. -//! It can be used for creating typesafe wrappers around C APIs. -//! -//! The `bitflags!` macro generates `struct`s that manage a set of flags. The -//! flags should only be defined for integer types, otherwise unexpected type -//! errors may occur at compile time. -//! -//! # Example -//! -//! ``` -//! use bitflags::bitflags; -//! -//! bitflags! { -//! struct Flags: u32 { -//! const A = 0b00000001; -//! const B = 0b00000010; -//! const C = 0b00000100; -//! const ABC = Self::A.bits | Self::B.bits | Self::C.bits; -//! } -//! } -//! -//! fn main() { -//! let e1 = Flags::A | Flags::C; -//! let e2 = Flags::B | Flags::C; -//! assert_eq!((e1 | e2), Flags::ABC); // union -//! assert_eq!((e1 & e2), Flags::C); // intersection -//! assert_eq!((e1 - e2), Flags::A); // set difference -//! assert_eq!(!e2, Flags::A); // set complement -//! } -//! ``` -//! -//! See [`example_generated::Flags`](./example_generated/struct.Flags.html) for documentation of code -//! generated by the above `bitflags!` expansion. -//! -//! The generated `struct`s can also be extended with type and trait -//! implementations: -//! -//! ``` -//! use std::fmt; -//! -//! use bitflags::bitflags; -//! -//! bitflags! { -//! struct Flags: u32 { -//! const A = 0b00000001; -//! const B = 0b00000010; -//! } -//! } -//! -//! impl Flags { -//! pub fn clear(&mut self) { -//! self.bits = 0; // The `bits` field can be accessed from within the -//! // same module where the `bitflags!` macro was invoked. -//! } -//! } -//! -//! impl fmt::Display for Flags { -//! fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { -//! write!(f, "hi!") -//! } -//! } -//! -//! fn main() { -//! let mut flags = Flags::A | Flags::B; -//! flags.clear(); -//! assert!(flags.is_empty()); -//! assert_eq!(format!("{}", flags), "hi!"); -//! assert_eq!(format!("{:?}", Flags::A | Flags::B), "A | B"); -//! assert_eq!(format!("{:?}", Flags::B), "B"); -//! } -//! ``` -//! -//! # Visibility -//! -//! The generated structs and their associated flag constants are not exported -//! out of the current module by default. A definition can be exported out of -//! the current module by adding `pub` before `struct`: -//! -//! ``` -//! mod example { -//! use bitflags::bitflags; -//! -//! bitflags! { -//! pub struct Flags1: u32 { -//! const A = 0b00000001; -//! } -//! -//! # pub -//! struct Flags2: u32 { -//! const B = 0b00000010; -//! } -//! } -//! } -//! -//! fn main() { -//! let flag1 = example::Flags1::A; -//! let flag2 = example::Flags2::B; // error: const `B` is private -//! } -//! ``` -//! -//! # Attributes -//! -//! Attributes can be attached to the generated `struct`s by placing them -//! before the `struct` keyword. -//! -//! ## Representations -//! -//! It's valid to add a `#[repr(C)]` or `#[repr(transparent)]` attribute to a type -//! generated by `bitflags!`. In these cases, the type is guaranteed to be a newtype. -//! -//! ``` -//! use bitflags::bitflags; -//! -//! bitflags! { -//! #[repr(transparent)] -//! struct Flags: u32 { -//! const A = 0b00000001; -//! const B = 0b00000010; -//! const C = 0b00000100; -//! } -//! } -//! ``` -//! -//! # Trait implementations -//! -//! The `Copy`, `Clone`, `PartialEq`, `Eq`, `PartialOrd`, `Ord` and `Hash` -//! traits are automatically derived for the `struct`s using the `derive` attribute. -//! Additional traits can be derived by providing an explicit `derive` -//! attribute on `struct`. -//! -//! The `Extend` and `FromIterator` traits are implemented for the `struct`s, -//! too: `Extend` adds the union of the instances of the `struct` iterated over, -//! while `FromIterator` calculates the union. -//! -//! The `Binary`, `Debug`, `LowerHex`, `Octal` and `UpperHex` traits are also -//! implemented by displaying the bits value of the internal struct. -//! -//! ## Operators -//! -//! The following operator traits are implemented for the generated `struct`s: -//! -//! - `BitOr` and `BitOrAssign`: union -//! - `BitAnd` and `BitAndAssign`: intersection -//! - `BitXor` and `BitXorAssign`: toggle -//! - `Sub` and `SubAssign`: set difference -//! - `Not`: set complement -//! -//! # Methods -//! -//! The following methods are defined for the generated `struct`s: -//! -//! - `empty`: an empty set of flags -//! - `all`: the set of all defined flags -//! - `bits`: the raw value of the flags currently stored -//! - `from_bits`: convert from underlying bit representation, unless that -//! representation contains bits that do not correspond to a -//! defined flag -//! - `from_bits_truncate`: convert from underlying bit representation, dropping -//! any bits that do not correspond to defined flags -//! - `from_bits_unchecked`: convert from underlying bit representation, keeping -//! all bits (even those not corresponding to defined -//! flags) -//! - `is_empty`: `true` if no flags are currently stored -//! - `is_all`: `true` if currently set flags exactly equal all defined flags -//! - `intersects`: `true` if there are flags common to both `self` and `other` -//! - `contains`: `true` if all of the flags in `other` are contained within `self` -//! - `insert`: inserts the specified flags in-place -//! - `remove`: removes the specified flags in-place -//! - `toggle`: the specified flags will be inserted if not present, and removed -//! if they are. -//! - `set`: inserts or removes the specified flags depending on the passed value -//! - `intersection`: returns a new set of flags, containing only the flags present -//! in both `self` and `other` (the argument to the function). -//! - `union`: returns a new set of flags, containing any flags present in -//! either `self` or `other` (the argument to the function). -//! - `difference`: returns a new set of flags, containing all flags present in -//! `self` without any of the flags present in `other` (the -//! argument to the function). -//! - `symmetric_difference`: returns a new set of flags, containing all flags -//! present in either `self` or `other` (the argument -//! to the function), but not both. -//! - `complement`: returns a new set of flags, containing all flags which are -//! not set in `self`, but which are allowed for this type. -//! -//! ## Default -//! -//! The `Default` trait is not automatically implemented for the generated structs. -//! -//! If your default value is equal to `0` (which is the same value as calling `empty()` -//! on the generated struct), you can simply derive `Default`: -//! -//! ``` -//! use bitflags::bitflags; -//! -//! bitflags! { -//! // Results in default value with bits: 0 -//! #[derive(Default)] -//! struct Flags: u32 { -//! const A = 0b00000001; -//! const B = 0b00000010; -//! const C = 0b00000100; -//! } -//! } -//! -//! fn main() { -//! let derived_default: Flags = Default::default(); -//! assert_eq!(derived_default.bits(), 0); -//! } -//! ``` -//! -//! If your default value is not equal to `0` you need to implement `Default` yourself: -//! -//! ``` -//! use bitflags::bitflags; -//! -//! bitflags! { -//! struct Flags: u32 { -//! const A = 0b00000001; -//! const B = 0b00000010; -//! const C = 0b00000100; -//! } -//! } -//! -//! // explicit `Default` implementation -//! impl Default for Flags { -//! fn default() -> Flags { -//! Flags::A | Flags::C -//! } -//! } -//! -//! fn main() { -//! let implemented_default: Flags = Default::default(); -//! assert_eq!(implemented_default, (Flags::A | Flags::C)); -//! } -//! ``` -//! -//! # Zero Flags -//! -//! Flags with a value equal to zero will have some strange behavior that one should be aware of. -//! -//! ``` -//! use bitflags::bitflags; -//! -//! bitflags! { -//! struct Flags: u32 { -//! const NONE = 0b00000000; -//! const SOME = 0b00000001; -//! } -//! } -//! -//! fn main() { -//! let empty = Flags::empty(); -//! let none = Flags::NONE; -//! let some = Flags::SOME; -//! -//! // Zero flags are treated as always present -//! assert!(empty.contains(Flags::NONE)); -//! assert!(none.contains(Flags::NONE)); -//! assert!(some.contains(Flags::NONE)); -//! -//! // Zero flags will be ignored when testing for emptiness -//! assert!(none.is_empty()); -//! } -//! ``` -//! -//! Users should generally avoid defining a flag with a value of zero. - -#![cfg_attr(not(test), no_std)] -#![doc(html_root_url = "https://docs.rs/bitflags/1.3.2")] - -#[doc(hidden)] -pub extern crate core as _core; - -/// The macro used to generate the flag structures. -/// -/// See the [crate level docs](../bitflags/index.html) for complete documentation. -/// -/// # Example -/// -/// ``` -/// use bitflags::bitflags; -/// -/// bitflags! { -/// struct Flags: u32 { -/// const A = 0b00000001; -/// const B = 0b00000010; -/// const C = 0b00000100; -/// const ABC = Self::A.bits | Self::B.bits | Self::C.bits; -/// } -/// } -/// -/// fn main() { -/// let e1 = Flags::A | Flags::C; -/// let e2 = Flags::B | Flags::C; -/// assert_eq!((e1 | e2), Flags::ABC); // union -/// assert_eq!((e1 & e2), Flags::C); // intersection -/// assert_eq!((e1 - e2), Flags::A); // set difference -/// assert_eq!(!e2, Flags::A); // set complement -/// } -/// ``` -/// -/// The generated `struct`s can also be extended with type and trait -/// implementations: -/// -/// ``` -/// use std::fmt; -/// -/// use bitflags::bitflags; -/// -/// bitflags! { -/// struct Flags: u32 { -/// const A = 0b00000001; -/// const B = 0b00000010; -/// } -/// } -/// -/// impl Flags { -/// pub fn clear(&mut self) { -/// self.bits = 0; // The `bits` field can be accessed from within the -/// // same module where the `bitflags!` macro was invoked. -/// } -/// } -/// -/// impl fmt::Display for Flags { -/// fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { -/// write!(f, "hi!") -/// } -/// } -/// -/// fn main() { -/// let mut flags = Flags::A | Flags::B; -/// flags.clear(); -/// assert!(flags.is_empty()); -/// assert_eq!(format!("{}", flags), "hi!"); -/// assert_eq!(format!("{:?}", Flags::A | Flags::B), "A | B"); -/// assert_eq!(format!("{:?}", Flags::B), "B"); -/// } -/// ``` -#[macro_export(local_inner_macros)] -macro_rules! bitflags { - ( - $(#[$outer:meta])* - $vis:vis struct $BitFlags:ident: $T:ty { - $( - $(#[$inner:ident $($args:tt)*])* - const $Flag:ident = $value:expr; - )* - } - - $($t:tt)* - ) => { - $(#[$outer])* - #[derive(Copy, PartialEq, Eq, Clone, PartialOrd, Ord, Hash)] - $vis struct $BitFlags { - bits: $T, - } - - __impl_bitflags! { - $BitFlags: $T { - $( - $(#[$inner $($args)*])* - $Flag = $value; - )* - } - } - - bitflags! { - $($t)* - } - }; - () => {}; -} - -// A helper macro to implement the `all` function. -#[macro_export(local_inner_macros)] -#[doc(hidden)] -macro_rules! __impl_all_bitflags { - ( - $BitFlags:ident: $T:ty { - $( - $(#[$attr:ident $($args:tt)*])* - $Flag:ident = $value:expr; - )+ - } - ) => { - // See `Debug::fmt` for why this approach is taken. - #[allow(non_snake_case)] - trait __BitFlags { - $( - const $Flag: $T = 0; - )+ - } - #[allow(non_snake_case)] - impl __BitFlags for $BitFlags { - $( - __impl_bitflags! { - #[allow(deprecated)] - $(? #[$attr $($args)*])* - const $Flag: $T = Self::$Flag.bits; - } - )+ - } - Self { bits: $(::$Flag)|+ } - }; - ( - $BitFlags:ident: $T:ty { } - ) => { - Self { bits: 0 } - }; -} - -#[macro_export(local_inner_macros)] -#[doc(hidden)] -macro_rules! __impl_bitflags { - ( - $BitFlags:ident: $T:ty { - $( - $(#[$attr:ident $($args:tt)*])* - $Flag:ident = $value:expr; - )* - } - ) => { - impl $crate::_core::fmt::Debug for $BitFlags { - fn fmt(&self, f: &mut $crate::_core::fmt::Formatter) -> $crate::_core::fmt::Result { - // This convoluted approach is to handle #[cfg]-based flag - // omission correctly. For example it needs to support: - // - // #[cfg(unix)] const A: Flag = /* ... */; - // #[cfg(windows)] const B: Flag = /* ... */; - - // Unconditionally define a check for every flag, even disabled - // ones. - #[allow(non_snake_case)] - trait __BitFlags { - $( - #[inline] - fn $Flag(&self) -> bool { false } - )* - } - - // Conditionally override the check for just those flags that - // are not #[cfg]ed away. - #[allow(non_snake_case)] - impl __BitFlags for $BitFlags { - $( - __impl_bitflags! { - #[allow(deprecated)] - #[inline] - $(? #[$attr $($args)*])* - fn $Flag(&self) -> bool { - if Self::$Flag.bits == 0 && self.bits != 0 { - false - } else { - self.bits & Self::$Flag.bits == Self::$Flag.bits - } - } - } - )* - } - - let mut first = true; - $( - if ::$Flag(self) { - if !first { - f.write_str(" | ")?; - } - first = false; - f.write_str($crate::_core::stringify!($Flag))?; - } - )* - let extra_bits = self.bits & !Self::all().bits(); - if extra_bits != 0 { - if !first { - f.write_str(" | ")?; - } - first = false; - f.write_str("0x")?; - $crate::_core::fmt::LowerHex::fmt(&extra_bits, f)?; - } - if first { - f.write_str("(empty)")?; - } - Ok(()) - } - } - impl $crate::_core::fmt::Binary for $BitFlags { - fn fmt(&self, f: &mut $crate::_core::fmt::Formatter) -> $crate::_core::fmt::Result { - $crate::_core::fmt::Binary::fmt(&self.bits, f) - } - } - impl $crate::_core::fmt::Octal for $BitFlags { - fn fmt(&self, f: &mut $crate::_core::fmt::Formatter) -> $crate::_core::fmt::Result { - $crate::_core::fmt::Octal::fmt(&self.bits, f) - } - } - impl $crate::_core::fmt::LowerHex for $BitFlags { - fn fmt(&self, f: &mut $crate::_core::fmt::Formatter) -> $crate::_core::fmt::Result { - $crate::_core::fmt::LowerHex::fmt(&self.bits, f) - } - } - impl $crate::_core::fmt::UpperHex for $BitFlags { - fn fmt(&self, f: &mut $crate::_core::fmt::Formatter) -> $crate::_core::fmt::Result { - $crate::_core::fmt::UpperHex::fmt(&self.bits, f) - } - } - - #[allow(dead_code)] - impl $BitFlags { - $( - $(#[$attr $($args)*])* - pub const $Flag: Self = Self { bits: $value }; - )* - - /// Returns an empty set of flags. - #[inline] - pub const fn empty() -> Self { - Self { bits: 0 } - } - - /// Returns the set containing all flags. - #[inline] - pub const fn all() -> Self { - __impl_all_bitflags! { - $BitFlags: $T { - $( - $(#[$attr $($args)*])* - $Flag = $value; - )* - } - } - } - - /// Returns the raw value of the flags currently stored. - #[inline] - pub const fn bits(&self) -> $T { - self.bits - } - - /// Convert from underlying bit representation, unless that - /// representation contains bits that do not correspond to a flag. - #[inline] - pub const fn from_bits(bits: $T) -> $crate::_core::option::Option { - if (bits & !Self::all().bits()) == 0 { - $crate::_core::option::Option::Some(Self { bits }) - } else { - $crate::_core::option::Option::None - } - } - - /// Convert from underlying bit representation, dropping any bits - /// that do not correspond to flags. - #[inline] - pub const fn from_bits_truncate(bits: $T) -> Self { - Self { bits: bits & Self::all().bits } - } - - /// Convert from underlying bit representation, preserving all - /// bits (even those not corresponding to a defined flag). - /// - /// # Safety - /// - /// The caller of the `bitflags!` macro can chose to allow or - /// disallow extra bits for their bitflags type. - /// - /// The caller of `from_bits_unchecked()` has to ensure that - /// all bits correspond to a defined flag or that extra bits - /// are valid for this bitflags type. - #[inline] - pub const unsafe fn from_bits_unchecked(bits: $T) -> Self { - Self { bits } - } - - /// Returns `true` if no flags are currently stored. - #[inline] - pub const fn is_empty(&self) -> bool { - self.bits() == Self::empty().bits() - } - - /// Returns `true` if all flags are currently set. - #[inline] - pub const fn is_all(&self) -> bool { - Self::all().bits | self.bits == self.bits - } - - /// Returns `true` if there are flags common to both `self` and `other`. - #[inline] - pub const fn intersects(&self, other: Self) -> bool { - !(Self { bits: self.bits & other.bits}).is_empty() - } - - /// Returns `true` if all of the flags in `other` are contained within `self`. - #[inline] - pub const fn contains(&self, other: Self) -> bool { - (self.bits & other.bits) == other.bits - } - - /// Inserts the specified flags in-place. - #[inline] - pub fn insert(&mut self, other: Self) { - self.bits |= other.bits; - } - - /// Removes the specified flags in-place. - #[inline] - pub fn remove(&mut self, other: Self) { - self.bits &= !other.bits; - } - - /// Toggles the specified flags in-place. - #[inline] - pub fn toggle(&mut self, other: Self) { - self.bits ^= other.bits; - } - - /// Inserts or removes the specified flags depending on the passed value. - #[inline] - pub fn set(&mut self, other: Self, value: bool) { - if value { - self.insert(other); - } else { - self.remove(other); - } - } - - /// Returns the intersection between the flags in `self` and - /// `other`. - /// - /// Specifically, the returned set contains only the flags which are - /// present in *both* `self` *and* `other`. - /// - /// This is equivalent to using the `&` operator (e.g. - /// [`ops::BitAnd`]), as in `flags & other`. - /// - /// [`ops::BitAnd`]: https://doc.rust-lang.org/std/ops/trait.BitAnd.html - #[inline] - #[must_use] - pub const fn intersection(self, other: Self) -> Self { - Self { bits: self.bits & other.bits } - } - - /// Returns the union of between the flags in `self` and `other`. - /// - /// Specifically, the returned set contains all flags which are - /// present in *either* `self` *or* `other`, including any which are - /// present in both (see [`Self::symmetric_difference`] if that - /// is undesirable). - /// - /// This is equivalent to using the `|` operator (e.g. - /// [`ops::BitOr`]), as in `flags | other`. - /// - /// [`ops::BitOr`]: https://doc.rust-lang.org/std/ops/trait.BitOr.html - #[inline] - #[must_use] - pub const fn union(self, other: Self) -> Self { - Self { bits: self.bits | other.bits } - } - - /// Returns the difference between the flags in `self` and `other`. - /// - /// Specifically, the returned set contains all flags present in - /// `self`, except for the ones present in `other`. - /// - /// It is also conceptually equivalent to the "bit-clear" operation: - /// `flags & !other` (and this syntax is also supported). - /// - /// This is equivalent to using the `-` operator (e.g. - /// [`ops::Sub`]), as in `flags - other`. - /// - /// [`ops::Sub`]: https://doc.rust-lang.org/std/ops/trait.Sub.html - #[inline] - #[must_use] - pub const fn difference(self, other: Self) -> Self { - Self { bits: self.bits & !other.bits } - } - - /// Returns the [symmetric difference][sym-diff] between the flags - /// in `self` and `other`. - /// - /// Specifically, the returned set contains the flags present which - /// are present in `self` or `other`, but that are not present in - /// both. Equivalently, it contains the flags present in *exactly - /// one* of the sets `self` and `other`. - /// - /// This is equivalent to using the `^` operator (e.g. - /// [`ops::BitXor`]), as in `flags ^ other`. - /// - /// [sym-diff]: https://en.wikipedia.org/wiki/Symmetric_difference - /// [`ops::BitXor`]: https://doc.rust-lang.org/std/ops/trait.BitXor.html - #[inline] - #[must_use] - pub const fn symmetric_difference(self, other: Self) -> Self { - Self { bits: self.bits ^ other.bits } - } - - /// Returns the complement of this set of flags. - /// - /// Specifically, the returned set contains all the flags which are - /// not set in `self`, but which are allowed for this type. - /// - /// Alternatively, it can be thought of as the set difference - /// between [`Self::all()`] and `self` (e.g. `Self::all() - self`) - /// - /// This is equivalent to using the `!` operator (e.g. - /// [`ops::Not`]), as in `!flags`. - /// - /// [`Self::all()`]: Self::all - /// [`ops::Not`]: https://doc.rust-lang.org/std/ops/trait.Not.html - #[inline] - #[must_use] - pub const fn complement(self) -> Self { - Self::from_bits_truncate(!self.bits) - } - - } - - impl $crate::_core::ops::BitOr for $BitFlags { - type Output = Self; - - /// Returns the union of the two sets of flags. - #[inline] - fn bitor(self, other: $BitFlags) -> Self { - Self { bits: self.bits | other.bits } - } - } - - impl $crate::_core::ops::BitOrAssign for $BitFlags { - /// Adds the set of flags. - #[inline] - fn bitor_assign(&mut self, other: Self) { - self.bits |= other.bits; - } - } - - impl $crate::_core::ops::BitXor for $BitFlags { - type Output = Self; - - /// Returns the left flags, but with all the right flags toggled. - #[inline] - fn bitxor(self, other: Self) -> Self { - Self { bits: self.bits ^ other.bits } - } - } - - impl $crate::_core::ops::BitXorAssign for $BitFlags { - /// Toggles the set of flags. - #[inline] - fn bitxor_assign(&mut self, other: Self) { - self.bits ^= other.bits; - } - } - - impl $crate::_core::ops::BitAnd for $BitFlags { - type Output = Self; - - /// Returns the intersection between the two sets of flags. - #[inline] - fn bitand(self, other: Self) -> Self { - Self { bits: self.bits & other.bits } - } - } - - impl $crate::_core::ops::BitAndAssign for $BitFlags { - /// Disables all flags disabled in the set. - #[inline] - fn bitand_assign(&mut self, other: Self) { - self.bits &= other.bits; - } - } - - impl $crate::_core::ops::Sub for $BitFlags { - type Output = Self; - - /// Returns the set difference of the two sets of flags. - #[inline] - fn sub(self, other: Self) -> Self { - Self { bits: self.bits & !other.bits } - } - } - - impl $crate::_core::ops::SubAssign for $BitFlags { - /// Disables all flags enabled in the set. - #[inline] - fn sub_assign(&mut self, other: Self) { - self.bits &= !other.bits; - } - } - - impl $crate::_core::ops::Not for $BitFlags { - type Output = Self; - - /// Returns the complement of this set of flags. - #[inline] - fn not(self) -> Self { - Self { bits: !self.bits } & Self::all() - } - } - - impl $crate::_core::iter::Extend<$BitFlags> for $BitFlags { - fn extend>(&mut self, iterator: T) { - for item in iterator { - self.insert(item) - } - } - } - - impl $crate::_core::iter::FromIterator<$BitFlags> for $BitFlags { - fn from_iter>(iterator: T) -> Self { - let mut result = Self::empty(); - result.extend(iterator); - result - } - } - }; - - // Every attribute that the user writes on a const is applied to the - // corresponding const that we generate, but within the implementation of - // Debug and all() we want to ignore everything but #[cfg] attributes. In - // particular, including a #[deprecated] attribute on those items would fail - // to compile. - // https://github.com/bitflags/bitflags/issues/109 - // - // Input: - // - // ? #[cfg(feature = "advanced")] - // ? #[deprecated(note = "Use something else.")] - // ? #[doc = r"High quality documentation."] - // fn f() -> i32 { /* ... */ } - // - // Output: - // - // #[cfg(feature = "advanced")] - // fn f() -> i32 { /* ... */ } - ( - $(#[$filtered:meta])* - ? #[cfg $($cfgargs:tt)*] - $(? #[$rest:ident $($restargs:tt)*])* - fn $($item:tt)* - ) => { - __impl_bitflags! { - $(#[$filtered])* - #[cfg $($cfgargs)*] - $(? #[$rest $($restargs)*])* - fn $($item)* - } - }; - ( - $(#[$filtered:meta])* - // $next != `cfg` - ? #[$next:ident $($nextargs:tt)*] - $(? #[$rest:ident $($restargs:tt)*])* - fn $($item:tt)* - ) => { - __impl_bitflags! { - $(#[$filtered])* - // $next filtered out - $(? #[$rest $($restargs)*])* - fn $($item)* - } - }; - ( - $(#[$filtered:meta])* - fn $($item:tt)* - ) => { - $(#[$filtered])* - fn $($item)* - }; - - // Every attribute that the user writes on a const is applied to the - // corresponding const that we generate, but within the implementation of - // Debug and all() we want to ignore everything but #[cfg] attributes. In - // particular, including a #[deprecated] attribute on those items would fail - // to compile. - // https://github.com/bitflags/bitflags/issues/109 - // - // const version - // - // Input: - // - // ? #[cfg(feature = "advanced")] - // ? #[deprecated(note = "Use something else.")] - // ? #[doc = r"High quality documentation."] - // const f: i32 { /* ... */ } - // - // Output: - // - // #[cfg(feature = "advanced")] - // const f: i32 { /* ... */ } - ( - $(#[$filtered:meta])* - ? #[cfg $($cfgargs:tt)*] - $(? #[$rest:ident $($restargs:tt)*])* - const $($item:tt)* - ) => { - __impl_bitflags! { - $(#[$filtered])* - #[cfg $($cfgargs)*] - $(? #[$rest $($restargs)*])* - const $($item)* - } - }; - ( - $(#[$filtered:meta])* - // $next != `cfg` - ? #[$next:ident $($nextargs:tt)*] - $(? #[$rest:ident $($restargs:tt)*])* - const $($item:tt)* - ) => { - __impl_bitflags! { - $(#[$filtered])* - // $next filtered out - $(? #[$rest $($restargs)*])* - const $($item)* - } - }; - ( - $(#[$filtered:meta])* - const $($item:tt)* - ) => { - $(#[$filtered])* - const $($item)* - }; -} - -#[cfg(feature = "example_generated")] -pub mod example_generated; - -#[cfg(test)] -mod tests { - use std::collections::hash_map::DefaultHasher; - use std::hash::{Hash, Hasher}; - - bitflags! { - #[doc = "> The first principle is that you must not fool yourself — and"] - #[doc = "> you are the easiest person to fool."] - #[doc = "> "] - #[doc = "> - Richard Feynman"] - #[derive(Default)] - struct Flags: u32 { - const A = 0b00000001; - #[doc = " macros are way better at generating code than trans is"] - const B = 0b00000010; - const C = 0b00000100; - #[doc = "* cmr bed"] - #[doc = "* strcat table"] - #[doc = " wait what?"] - const ABC = Self::A.bits | Self::B.bits | Self::C.bits; - } - - struct _CfgFlags: u32 { - #[cfg(unix)] - const _CFG_A = 0b01; - #[cfg(windows)] - const _CFG_B = 0b01; - #[cfg(unix)] - const _CFG_C = Self::_CFG_A.bits | 0b10; - } - - struct AnotherSetOfFlags: i8 { - const ANOTHER_FLAG = -1_i8; - } - - struct LongFlags: u32 { - const LONG_A = 0b1111111111111111; - } - } - - bitflags! { - struct EmptyFlags: u32 { - } - } - - #[test] - fn test_bits() { - assert_eq!(Flags::empty().bits(), 0b00000000); - assert_eq!(Flags::A.bits(), 0b00000001); - assert_eq!(Flags::ABC.bits(), 0b00000111); - - assert_eq!(AnotherSetOfFlags::empty().bits(), 0b00); - assert_eq!(AnotherSetOfFlags::ANOTHER_FLAG.bits(), !0_i8); - - assert_eq!(EmptyFlags::empty().bits(), 0b00000000); - } - - #[test] - fn test_from_bits() { - assert_eq!(Flags::from_bits(0), Some(Flags::empty())); - assert_eq!(Flags::from_bits(0b1), Some(Flags::A)); - assert_eq!(Flags::from_bits(0b10), Some(Flags::B)); - assert_eq!(Flags::from_bits(0b11), Some(Flags::A | Flags::B)); - assert_eq!(Flags::from_bits(0b1000), None); - - assert_eq!( - AnotherSetOfFlags::from_bits(!0_i8), - Some(AnotherSetOfFlags::ANOTHER_FLAG) - ); - - assert_eq!(EmptyFlags::from_bits(0), Some(EmptyFlags::empty())); - assert_eq!(EmptyFlags::from_bits(0b1), None); - } - - #[test] - fn test_from_bits_truncate() { - assert_eq!(Flags::from_bits_truncate(0), Flags::empty()); - assert_eq!(Flags::from_bits_truncate(0b1), Flags::A); - assert_eq!(Flags::from_bits_truncate(0b10), Flags::B); - assert_eq!(Flags::from_bits_truncate(0b11), (Flags::A | Flags::B)); - assert_eq!(Flags::from_bits_truncate(0b1000), Flags::empty()); - assert_eq!(Flags::from_bits_truncate(0b1001), Flags::A); - - assert_eq!( - AnotherSetOfFlags::from_bits_truncate(0_i8), - AnotherSetOfFlags::empty() - ); - - assert_eq!(EmptyFlags::from_bits_truncate(0), EmptyFlags::empty()); - assert_eq!(EmptyFlags::from_bits_truncate(0b1), EmptyFlags::empty()); - } - - #[test] - fn test_from_bits_unchecked() { - let extra = unsafe { Flags::from_bits_unchecked(0b1000) }; - assert_eq!(unsafe { Flags::from_bits_unchecked(0) }, Flags::empty()); - assert_eq!(unsafe { Flags::from_bits_unchecked(0b1) }, Flags::A); - assert_eq!(unsafe { Flags::from_bits_unchecked(0b10) }, Flags::B); - - assert_eq!( - unsafe { Flags::from_bits_unchecked(0b11) }, - (Flags::A | Flags::B) - ); - assert_eq!( - unsafe { Flags::from_bits_unchecked(0b1000) }, - (extra | Flags::empty()) - ); - assert_eq!( - unsafe { Flags::from_bits_unchecked(0b1001) }, - (extra | Flags::A) - ); - - let extra = unsafe { EmptyFlags::from_bits_unchecked(0b1000) }; - assert_eq!( - unsafe { EmptyFlags::from_bits_unchecked(0b1000) }, - (extra | EmptyFlags::empty()) - ); - } - - #[test] - fn test_is_empty() { - assert!(Flags::empty().is_empty()); - assert!(!Flags::A.is_empty()); - assert!(!Flags::ABC.is_empty()); - - assert!(!AnotherSetOfFlags::ANOTHER_FLAG.is_empty()); - - assert!(EmptyFlags::empty().is_empty()); - assert!(EmptyFlags::all().is_empty()); - } - - #[test] - fn test_is_all() { - assert!(Flags::all().is_all()); - assert!(!Flags::A.is_all()); - assert!(Flags::ABC.is_all()); - - let extra = unsafe { Flags::from_bits_unchecked(0b1000) }; - assert!(!extra.is_all()); - assert!(!(Flags::A | extra).is_all()); - assert!((Flags::ABC | extra).is_all()); - - assert!(AnotherSetOfFlags::ANOTHER_FLAG.is_all()); - - assert!(EmptyFlags::all().is_all()); - assert!(EmptyFlags::empty().is_all()); - } - - #[test] - fn test_two_empties_do_not_intersect() { - let e1 = Flags::empty(); - let e2 = Flags::empty(); - assert!(!e1.intersects(e2)); - - assert!(AnotherSetOfFlags::ANOTHER_FLAG.intersects(AnotherSetOfFlags::ANOTHER_FLAG)); - } - - #[test] - fn test_empty_does_not_intersect_with_full() { - let e1 = Flags::empty(); - let e2 = Flags::ABC; - assert!(!e1.intersects(e2)); - } - - #[test] - fn test_disjoint_intersects() { - let e1 = Flags::A; - let e2 = Flags::B; - assert!(!e1.intersects(e2)); - } - - #[test] - fn test_overlapping_intersects() { - let e1 = Flags::A; - let e2 = Flags::A | Flags::B; - assert!(e1.intersects(e2)); - } - - #[test] - fn test_contains() { - let e1 = Flags::A; - let e2 = Flags::A | Flags::B; - assert!(!e1.contains(e2)); - assert!(e2.contains(e1)); - assert!(Flags::ABC.contains(e2)); - - assert!(AnotherSetOfFlags::ANOTHER_FLAG.contains(AnotherSetOfFlags::ANOTHER_FLAG)); - - assert!(EmptyFlags::empty().contains(EmptyFlags::empty())); - } - - #[test] - fn test_insert() { - let mut e1 = Flags::A; - let e2 = Flags::A | Flags::B; - e1.insert(e2); - assert_eq!(e1, e2); - - let mut e3 = AnotherSetOfFlags::empty(); - e3.insert(AnotherSetOfFlags::ANOTHER_FLAG); - assert_eq!(e3, AnotherSetOfFlags::ANOTHER_FLAG); - } - - #[test] - fn test_remove() { - let mut e1 = Flags::A | Flags::B; - let e2 = Flags::A | Flags::C; - e1.remove(e2); - assert_eq!(e1, Flags::B); - - let mut e3 = AnotherSetOfFlags::ANOTHER_FLAG; - e3.remove(AnotherSetOfFlags::ANOTHER_FLAG); - assert_eq!(e3, AnotherSetOfFlags::empty()); - } - - #[test] - fn test_operators() { - let e1 = Flags::A | Flags::C; - let e2 = Flags::B | Flags::C; - assert_eq!((e1 | e2), Flags::ABC); // union - assert_eq!((e1 & e2), Flags::C); // intersection - assert_eq!((e1 - e2), Flags::A); // set difference - assert_eq!(!e2, Flags::A); // set complement - assert_eq!(e1 ^ e2, Flags::A | Flags::B); // toggle - let mut e3 = e1; - e3.toggle(e2); - assert_eq!(e3, Flags::A | Flags::B); - - let mut m4 = AnotherSetOfFlags::empty(); - m4.toggle(AnotherSetOfFlags::empty()); - assert_eq!(m4, AnotherSetOfFlags::empty()); - } - - #[test] - fn test_operators_unchecked() { - let extra = unsafe { Flags::from_bits_unchecked(0b1000) }; - let e1 = Flags::A | Flags::C | extra; - let e2 = Flags::B | Flags::C; - assert_eq!((e1 | e2), (Flags::ABC | extra)); // union - assert_eq!((e1 & e2), Flags::C); // intersection - assert_eq!((e1 - e2), (Flags::A | extra)); // set difference - assert_eq!(!e2, Flags::A); // set complement - assert_eq!(!e1, Flags::B); // set complement - assert_eq!(e1 ^ e2, Flags::A | Flags::B | extra); // toggle - let mut e3 = e1; - e3.toggle(e2); - assert_eq!(e3, Flags::A | Flags::B | extra); - } - - #[test] - fn test_set_ops_basic() { - let ab = Flags::A.union(Flags::B); - let ac = Flags::A.union(Flags::C); - let bc = Flags::B.union(Flags::C); - assert_eq!(ab.bits, 0b011); - assert_eq!(bc.bits, 0b110); - assert_eq!(ac.bits, 0b101); - - assert_eq!(ab, Flags::B.union(Flags::A)); - assert_eq!(ac, Flags::C.union(Flags::A)); - assert_eq!(bc, Flags::C.union(Flags::B)); - - assert_eq!(ac, Flags::A | Flags::C); - assert_eq!(bc, Flags::B | Flags::C); - assert_eq!(ab.union(bc), Flags::ABC); - - assert_eq!(ac, Flags::A | Flags::C); - assert_eq!(bc, Flags::B | Flags::C); - - assert_eq!(ac.union(bc), ac | bc); - assert_eq!(ac.union(bc), Flags::ABC); - assert_eq!(bc.union(ac), Flags::ABC); - - assert_eq!(ac.intersection(bc), ac & bc); - assert_eq!(ac.intersection(bc), Flags::C); - assert_eq!(bc.intersection(ac), Flags::C); - - assert_eq!(ac.difference(bc), ac - bc); - assert_eq!(bc.difference(ac), bc - ac); - assert_eq!(ac.difference(bc), Flags::A); - assert_eq!(bc.difference(ac), Flags::B); - - assert_eq!(bc.complement(), !bc); - assert_eq!(bc.complement(), Flags::A); - assert_eq!(ac.symmetric_difference(bc), Flags::A.union(Flags::B)); - assert_eq!(bc.symmetric_difference(ac), Flags::A.union(Flags::B)); - } - - #[test] - fn test_set_ops_const() { - // These just test that these compile and don't cause use-site panics - // (would be possible if we had some sort of UB) - const INTERSECT: Flags = Flags::all().intersection(Flags::C); - const UNION: Flags = Flags::A.union(Flags::C); - const DIFFERENCE: Flags = Flags::all().difference(Flags::A); - const COMPLEMENT: Flags = Flags::C.complement(); - const SYM_DIFFERENCE: Flags = UNION.symmetric_difference(DIFFERENCE); - assert_eq!(INTERSECT, Flags::C); - assert_eq!(UNION, Flags::A | Flags::C); - assert_eq!(DIFFERENCE, Flags::all() - Flags::A); - assert_eq!(COMPLEMENT, !Flags::C); - assert_eq!(SYM_DIFFERENCE, (Flags::A | Flags::C) ^ (Flags::all() - Flags::A)); - } - - #[test] - fn test_set_ops_unchecked() { - let extra = unsafe { Flags::from_bits_unchecked(0b1000) }; - let e1 = Flags::A.union(Flags::C).union(extra); - let e2 = Flags::B.union(Flags::C); - assert_eq!(e1.bits, 0b1101); - assert_eq!(e1.union(e2), (Flags::ABC | extra)); - assert_eq!(e1.intersection(e2), Flags::C); - assert_eq!(e1.difference(e2), Flags::A | extra); - assert_eq!(e2.difference(e1), Flags::B); - assert_eq!(e2.complement(), Flags::A); - assert_eq!(e1.complement(), Flags::B); - assert_eq!(e1.symmetric_difference(e2), Flags::A | Flags::B | extra); // toggle - } - - #[test] - fn test_set_ops_exhaustive() { - // Define a flag that contains gaps to help exercise edge-cases, - // especially around "unknown" flags (e.g. ones outside of `all()` - // `from_bits_unchecked`). - // - when lhs and rhs both have different sets of unknown flags. - // - unknown flags at both ends, and in the middle - // - cases with "gaps". - bitflags! { - struct Test: u16 { - // Intentionally no `A` - const B = 0b000000010; - // Intentionally no `C` - const D = 0b000001000; - const E = 0b000010000; - const F = 0b000100000; - const G = 0b001000000; - // Intentionally no `H` - const I = 0b100000000; - } - } - let iter_test_flags = - || (0..=0b111_1111_1111).map(|bits| unsafe { Test::from_bits_unchecked(bits) }); - - for a in iter_test_flags() { - assert_eq!( - a.complement(), - Test::from_bits_truncate(!a.bits), - "wrong result: !({:?})", - a, - ); - assert_eq!(a.complement(), !a, "named != op: !({:?})", a); - for b in iter_test_flags() { - // Check that the named operations produce the expected bitwise - // values. - assert_eq!( - a.union(b).bits, - a.bits | b.bits, - "wrong result: `{:?}` | `{:?}`", - a, - b, - ); - assert_eq!( - a.intersection(b).bits, - a.bits & b.bits, - "wrong result: `{:?}` & `{:?}`", - a, - b, - ); - assert_eq!( - a.symmetric_difference(b).bits, - a.bits ^ b.bits, - "wrong result: `{:?}` ^ `{:?}`", - a, - b, - ); - assert_eq!( - a.difference(b).bits, - a.bits & !b.bits, - "wrong result: `{:?}` - `{:?}`", - a, - b, - ); - // Note: Difference is checked as both `a - b` and `b - a` - assert_eq!( - b.difference(a).bits, - b.bits & !a.bits, - "wrong result: `{:?}` - `{:?}`", - b, - a, - ); - // Check that the named set operations are equivalent to the - // bitwise equivalents - assert_eq!(a.union(b), a | b, "named != op: `{:?}` | `{:?}`", a, b,); - assert_eq!( - a.intersection(b), - a & b, - "named != op: `{:?}` & `{:?}`", - a, - b, - ); - assert_eq!( - a.symmetric_difference(b), - a ^ b, - "named != op: `{:?}` ^ `{:?}`", - a, - b, - ); - assert_eq!(a.difference(b), a - b, "named != op: `{:?}` - `{:?}`", a, b,); - // Note: Difference is checked as both `a - b` and `b - a` - assert_eq!(b.difference(a), b - a, "named != op: `{:?}` - `{:?}`", b, a,); - // Verify that the operations which should be symmetric are - // actually symmetric. - assert_eq!(a.union(b), b.union(a), "asymmetry: `{:?}` | `{:?}`", a, b,); - assert_eq!( - a.intersection(b), - b.intersection(a), - "asymmetry: `{:?}` & `{:?}`", - a, - b, - ); - assert_eq!( - a.symmetric_difference(b), - b.symmetric_difference(a), - "asymmetry: `{:?}` ^ `{:?}`", - a, - b, - ); - } - } - } - - #[test] - fn test_set() { - let mut e1 = Flags::A | Flags::C; - e1.set(Flags::B, true); - e1.set(Flags::C, false); - - assert_eq!(e1, Flags::A | Flags::B); - } - - #[test] - fn test_assignment_operators() { - let mut m1 = Flags::empty(); - let e1 = Flags::A | Flags::C; - // union - m1 |= Flags::A; - assert_eq!(m1, Flags::A); - // intersection - m1 &= e1; - assert_eq!(m1, Flags::A); - // set difference - m1 -= m1; - assert_eq!(m1, Flags::empty()); - // toggle - m1 ^= e1; - assert_eq!(m1, e1); - } - - #[test] - fn test_const_fn() { - const _M1: Flags = Flags::empty(); - - const M2: Flags = Flags::A; - assert_eq!(M2, Flags::A); - - const M3: Flags = Flags::C; - assert_eq!(M3, Flags::C); - } - - #[test] - fn test_extend() { - let mut flags; - - flags = Flags::empty(); - flags.extend([].iter().cloned()); - assert_eq!(flags, Flags::empty()); - - flags = Flags::empty(); - flags.extend([Flags::A, Flags::B].iter().cloned()); - assert_eq!(flags, Flags::A | Flags::B); - - flags = Flags::A; - flags.extend([Flags::A, Flags::B].iter().cloned()); - assert_eq!(flags, Flags::A | Flags::B); - - flags = Flags::B; - flags.extend([Flags::A, Flags::ABC].iter().cloned()); - assert_eq!(flags, Flags::ABC); - } - - #[test] - fn test_from_iterator() { - assert_eq!([].iter().cloned().collect::(), Flags::empty()); - assert_eq!( - [Flags::A, Flags::B].iter().cloned().collect::(), - Flags::A | Flags::B - ); - assert_eq!( - [Flags::A, Flags::ABC].iter().cloned().collect::(), - Flags::ABC - ); - } - - #[test] - fn test_lt() { - let mut a = Flags::empty(); - let mut b = Flags::empty(); - - assert!(!(a < b) && !(b < a)); - b = Flags::B; - assert!(a < b); - a = Flags::C; - assert!(!(a < b) && b < a); - b = Flags::C | Flags::B; - assert!(a < b); - } - - #[test] - fn test_ord() { - let mut a = Flags::empty(); - let mut b = Flags::empty(); - - assert!(a <= b && a >= b); - a = Flags::A; - assert!(a > b && a >= b); - assert!(b < a && b <= a); - b = Flags::B; - assert!(b > a && b >= a); - assert!(a < b && a <= b); - } - - fn hash(t: &T) -> u64 { - let mut s = DefaultHasher::new(); - t.hash(&mut s); - s.finish() - } - - #[test] - fn test_hash() { - let mut x = Flags::empty(); - let mut y = Flags::empty(); - assert_eq!(hash(&x), hash(&y)); - x = Flags::all(); - y = Flags::ABC; - assert_eq!(hash(&x), hash(&y)); - } - - #[test] - fn test_default() { - assert_eq!(Flags::empty(), Flags::default()); - } - - #[test] - fn test_debug() { - assert_eq!(format!("{:?}", Flags::A | Flags::B), "A | B"); - assert_eq!(format!("{:?}", Flags::empty()), "(empty)"); - assert_eq!(format!("{:?}", Flags::ABC), "A | B | C | ABC"); - let extra = unsafe { Flags::from_bits_unchecked(0xb8) }; - assert_eq!(format!("{:?}", extra), "0xb8"); - assert_eq!(format!("{:?}", Flags::A | extra), "A | 0xb8"); - - assert_eq!( - format!("{:?}", Flags::ABC | extra), - "A | B | C | ABC | 0xb8" - ); - - assert_eq!(format!("{:?}", EmptyFlags::empty()), "(empty)"); - } - - #[test] - fn test_binary() { - assert_eq!(format!("{:b}", Flags::ABC), "111"); - assert_eq!(format!("{:#b}", Flags::ABC), "0b111"); - let extra = unsafe { Flags::from_bits_unchecked(0b1010000) }; - assert_eq!(format!("{:b}", Flags::ABC | extra), "1010111"); - assert_eq!(format!("{:#b}", Flags::ABC | extra), "0b1010111"); - } - - #[test] - fn test_octal() { - assert_eq!(format!("{:o}", LongFlags::LONG_A), "177777"); - assert_eq!(format!("{:#o}", LongFlags::LONG_A), "0o177777"); - let extra = unsafe { LongFlags::from_bits_unchecked(0o5000000) }; - assert_eq!(format!("{:o}", LongFlags::LONG_A | extra), "5177777"); - assert_eq!(format!("{:#o}", LongFlags::LONG_A | extra), "0o5177777"); - } - - #[test] - fn test_lowerhex() { - assert_eq!(format!("{:x}", LongFlags::LONG_A), "ffff"); - assert_eq!(format!("{:#x}", LongFlags::LONG_A), "0xffff"); - let extra = unsafe { LongFlags::from_bits_unchecked(0xe00000) }; - assert_eq!(format!("{:x}", LongFlags::LONG_A | extra), "e0ffff"); - assert_eq!(format!("{:#x}", LongFlags::LONG_A | extra), "0xe0ffff"); - } - - #[test] - fn test_upperhex() { - assert_eq!(format!("{:X}", LongFlags::LONG_A), "FFFF"); - assert_eq!(format!("{:#X}", LongFlags::LONG_A), "0xFFFF"); - let extra = unsafe { LongFlags::from_bits_unchecked(0xe00000) }; - assert_eq!(format!("{:X}", LongFlags::LONG_A | extra), "E0FFFF"); - assert_eq!(format!("{:#X}", LongFlags::LONG_A | extra), "0xE0FFFF"); - } - - mod submodule { - bitflags! { - pub struct PublicFlags: i8 { - const X = 0; - } - - struct PrivateFlags: i8 { - const Y = 0; - } - } - - #[test] - fn test_private() { - let _ = PrivateFlags::Y; - } - } - - #[test] - fn test_public() { - let _ = submodule::PublicFlags::X; - } - - mod t1 { - mod foo { - pub type Bar = i32; - } - - bitflags! { - /// baz - struct Flags: foo::Bar { - const A = 0b00000001; - #[cfg(foo)] - const B = 0b00000010; - #[cfg(foo)] - const C = 0b00000010; - } - } - } - - #[test] - fn test_in_function() { - bitflags! { - struct Flags: u8 { - const A = 1; - #[cfg(any())] // false - const B = 2; - } - } - assert_eq!(Flags::all(), Flags::A); - assert_eq!(format!("{:?}", Flags::A), "A"); - } - - #[test] - fn test_deprecated() { - bitflags! { - pub struct TestFlags: u32 { - #[deprecated(note = "Use something else.")] - const ONE = 1; - } - } - } - - #[test] - fn test_pub_crate() { - mod module { - bitflags! { - pub (crate) struct Test: u8 { - const FOO = 1; - } - } - } - - assert_eq!(module::Test::FOO.bits(), 1); - } - - #[test] - fn test_pub_in_module() { - mod module { - mod submodule { - bitflags! { - // `pub (in super)` means only the module `module` will - // be able to access this. - pub (in super) struct Test: u8 { - const FOO = 1; - } - } - } - - mod test { - // Note: due to `pub (in super)`, - // this cannot be accessed directly by the testing code. - pub(super) fn value() -> u8 { - super::submodule::Test::FOO.bits() - } - } - - pub fn value() -> u8 { - test::value() - } - } - - assert_eq!(module::value(), 1) - } - - #[test] - fn test_zero_value_flags() { - bitflags! { - struct Flags: u32 { - const NONE = 0b0; - const SOME = 0b1; - } - } - - assert!(Flags::empty().contains(Flags::NONE)); - assert!(Flags::SOME.contains(Flags::NONE)); - assert!(Flags::NONE.is_empty()); - - assert_eq!(format!("{:?}", Flags::empty()), "NONE"); - assert_eq!(format!("{:?}", Flags::SOME), "SOME"); - } - - #[test] - fn test_empty_bitflags() { - bitflags! {} - } - - #[test] - fn test_u128_bitflags() { - bitflags! { - struct Flags128: u128 { - const A = 0x0000_0000_0000_0000_0000_0000_0000_0001; - const B = 0x0000_0000_0000_1000_0000_0000_0000_0000; - const C = 0x8000_0000_0000_0000_0000_0000_0000_0000; - const ABC = Self::A.bits | Self::B.bits | Self::C.bits; - } - } - - assert_eq!(Flags128::ABC, Flags128::A | Flags128::B | Flags128::C); - assert_eq!(Flags128::A.bits, 0x0000_0000_0000_0000_0000_0000_0000_0001); - assert_eq!(Flags128::B.bits, 0x0000_0000_0000_1000_0000_0000_0000_0000); - assert_eq!(Flags128::C.bits, 0x8000_0000_0000_0000_0000_0000_0000_0000); - assert_eq!( - Flags128::ABC.bits, - 0x8000_0000_0000_1000_0000_0000_0000_0001 - ); - assert_eq!(format!("{:?}", Flags128::A), "A"); - assert_eq!(format!("{:?}", Flags128::B), "B"); - assert_eq!(format!("{:?}", Flags128::C), "C"); - assert_eq!(format!("{:?}", Flags128::ABC), "A | B | C | ABC"); - } - - #[test] - fn test_serde_bitflags_serialize() { - let flags = SerdeFlags::A | SerdeFlags::B; - - let serialized = serde_json::to_string(&flags).unwrap(); - - assert_eq!(serialized, r#"{"bits":3}"#); - } - - #[test] - fn test_serde_bitflags_deserialize() { - let deserialized: SerdeFlags = serde_json::from_str(r#"{"bits":12}"#).unwrap(); - - let expected = SerdeFlags::C | SerdeFlags::D; - - assert_eq!(deserialized.bits, expected.bits); - } - - #[test] - fn test_serde_bitflags_roundtrip() { - let flags = SerdeFlags::A | SerdeFlags::B; - - let deserialized: SerdeFlags = serde_json::from_str(&serde_json::to_string(&flags).unwrap()).unwrap(); - - assert_eq!(deserialized.bits, flags.bits); - } - - bitflags! { - #[derive(serde::Serialize, serde::Deserialize)] - struct SerdeFlags: u32 { - const A = 1; - const B = 2; - const C = 4; - const D = 8; - } - } -} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/basic.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/basic.rs deleted file mode 100644 index 73a52bec50b6..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/basic.rs +++ /dev/null @@ -1,20 +0,0 @@ -#![no_std] - -use bitflags::bitflags; - -bitflags! { - /// baz - struct Flags: u32 { - const A = 0b00000001; - #[doc = "bar"] - const B = 0b00000010; - const C = 0b00000100; - #[doc = "foo"] - const ABC = Flags::A.bits | Flags::B.bits | Flags::C.bits; - } -} - -#[test] -fn basic() { - assert_eq!(Flags::ABC, Flags::A | Flags::B | Flags::C); -} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/.gitignore b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/.gitignore deleted file mode 100644 index 4dd9abc8eb25..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.stderr diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.rs deleted file mode 100644 index 38f4822f5a5f..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.rs +++ /dev/null @@ -1,10 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - #[derive(Clone, Copy)] - struct Flags: u32 { - const A = 0b00000001; - } -} - -fn main() {} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.stderr.beta b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.stderr.beta deleted file mode 100644 index 0c13aa502419..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/copy.stderr.beta +++ /dev/null @@ -1,27 +0,0 @@ -error[E0119]: conflicting implementations of trait `std::clone::Clone` for type `Flags` - --> $DIR/copy.rs:3:1 - | -3 | / bitflags! { -4 | | #[derive(Clone, Copy)] - | | ----- first implementation here -5 | | struct Flags: u32 { -6 | | const A = 0b00000001; -7 | | } -8 | | } - | |_^ conflicting implementation for `Flags` - | - = note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0119]: conflicting implementations of trait `std::marker::Copy` for type `Flags` - --> $DIR/copy.rs:3:1 - | -3 | / bitflags! { -4 | | #[derive(Clone, Copy)] - | | ---- first implementation here -5 | | struct Flags: u32 { -6 | | const A = 0b00000001; -7 | | } -8 | | } - | |_^ conflicting implementation for `Flags` - | - = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.rs deleted file mode 100644 index 4abbd630c6e1..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.rs +++ /dev/null @@ -1,10 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - #[derive(PartialEq, Eq)] - struct Flags: u32 { - const A = 0b00000001; - } -} - -fn main() {} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.stderr.beta b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.stderr.beta deleted file mode 100644 index 8a1a3b410a0e..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/impls/eq.stderr.beta +++ /dev/null @@ -1,55 +0,0 @@ -error[E0119]: conflicting implementations of trait `std::cmp::PartialEq` for type `Flags` - --> $DIR/eq.rs:3:1 - | -3 | / bitflags! { -4 | | #[derive(PartialEq, Eq)] - | | --------- first implementation here -5 | | struct Flags: u32 { -6 | | const A = 0b00000001; -7 | | } -8 | | } - | |_^ conflicting implementation for `Flags` - | - = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0119]: conflicting implementations of trait `std::cmp::Eq` for type `Flags` - --> $DIR/eq.rs:3:1 - | -3 | / bitflags! { -4 | | #[derive(PartialEq, Eq)] - | | -- first implementation here -5 | | struct Flags: u32 { -6 | | const A = 0b00000001; -7 | | } -8 | | } - | |_^ conflicting implementation for `Flags` - | - = note: this error originates in the derive macro `Eq` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0119]: conflicting implementations of trait `std::marker::StructuralPartialEq` for type `Flags` - --> $DIR/eq.rs:3:1 - | -3 | / bitflags! { -4 | | #[derive(PartialEq, Eq)] - | | --------- first implementation here -5 | | struct Flags: u32 { -6 | | const A = 0b00000001; -7 | | } -8 | | } - | |_^ conflicting implementation for `Flags` - | - = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0119]: conflicting implementations of trait `std::marker::StructuralEq` for type `Flags` - --> $DIR/eq.rs:3:1 - | -3 | / bitflags! { -4 | | #[derive(PartialEq, Eq)] - | | -- first implementation here -5 | | struct Flags: u32 { -6 | | const A = 0b00000001; -7 | | } -8 | | } - | |_^ conflicting implementation for `Flags` - | - = note: this error originates in the derive macro `Eq` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.rs deleted file mode 100644 index c2856b10830d..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.rs +++ /dev/null @@ -1,123 +0,0 @@ -use std::{ - fmt::{ - self, - Debug, - Display, - LowerHex, - UpperHex, - Octal, - Binary, - }, - ops::{ - BitAnd, - BitOr, - BitXor, - BitAndAssign, - BitOrAssign, - BitXorAssign, - Not, - }, -}; - -use bitflags::bitflags; - -// Ideally we'd actually want this to work, but currently need something like `num`'s `Zero` -// With some design work it could be made possible -#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] -struct MyInt(u8); - -impl BitAnd for MyInt { - type Output = Self; - - fn bitand(self, other: Self) -> Self { - MyInt(self.0 & other.0) - } -} - -impl BitOr for MyInt { - type Output = Self; - - fn bitor(self, other: Self) -> Self { - MyInt(self.0 | other.0) - } -} - -impl BitXor for MyInt { - type Output = Self; - - fn bitxor(self, other: Self) -> Self { - MyInt(self.0 ^ other.0) - } -} - -impl BitAndAssign for MyInt { - fn bitand_assign(&mut self, other: Self) { - self.0 &= other.0 - } -} - -impl BitOrAssign for MyInt { - fn bitor_assign(&mut self, other: Self) { - self.0 |= other.0 - } -} - -impl BitXorAssign for MyInt { - fn bitxor_assign(&mut self, other: Self) { - self.0 ^= other.0 - } -} - -impl Debug for MyInt { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - Debug::fmt(&self.0, f) - } -} - -impl Display for MyInt { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - Display::fmt(&self.0, f) - } -} - -impl LowerHex for MyInt { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - LowerHex::fmt(&self.0, f) - } -} - -impl UpperHex for MyInt { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - UpperHex::fmt(&self.0, f) - } -} - -impl Octal for MyInt { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - Octal::fmt(&self.0, f) - } -} - -impl Binary for MyInt { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - Binary::fmt(&self.0, f) - } -} - -impl Not for MyInt { - type Output = MyInt; - - fn not(self) -> Self { - MyInt(!self.0) - } -} - -bitflags! { - struct Flags128: MyInt { - const A = MyInt(0b0000_0001u8); - const B = MyInt(0b0000_0010u8); - const C = MyInt(0b0000_0100u8); - } -} - -fn main() {} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.stderr.beta b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.stderr.beta deleted file mode 100644 index 1f0fb5cf7ad0..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_defined.stderr.beta +++ /dev/null @@ -1,27 +0,0 @@ -error[E0308]: mismatched types - --> $DIR/all_defined.rs:115:1 - | -115 | / bitflags! { -116 | | struct Flags128: MyInt { -117 | | const A = MyInt(0b0000_0001u8); -118 | | const B = MyInt(0b0000_0010u8); -119 | | const C = MyInt(0b0000_0100u8); -120 | | } -121 | | } - | |_^ expected struct `MyInt`, found integer - | - = note: this error originates in the macro `__impl_all_bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0308]: mismatched types - --> $DIR/all_defined.rs:115:1 - | -115 | / bitflags! { -116 | | struct Flags128: MyInt { -117 | | const A = MyInt(0b0000_0001u8); -118 | | const B = MyInt(0b0000_0010u8); -119 | | const C = MyInt(0b0000_0100u8); -120 | | } -121 | | } - | |_^ expected struct `MyInt`, found integer - | - = note: this error originates in the macro `__impl_bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.rs deleted file mode 100644 index fff6b2cc1306..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.rs +++ /dev/null @@ -1,13 +0,0 @@ -use bitflags::bitflags; - -struct MyInt(u8); - -bitflags! { - struct Flags128: MyInt { - const A = MyInt(0b0000_0001); - const B = MyInt(0b0000_0010); - const C = MyInt(0b0000_0100); - } -} - -fn main() {} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.stderr.beta b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.stderr.beta deleted file mode 100644 index ee95f8365e33..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/non_integer_base/all_missing.stderr.beta +++ /dev/null @@ -1,13 +0,0 @@ -error[E0204]: the trait `Copy` may not be implemented for this type - --> $DIR/all_missing.rs:5:1 - | -5 | / bitflags! { -6 | | struct Flags128: MyInt { -7 | | const A = MyInt(0b0000_0001); -8 | | const B = MyInt(0b0000_0010); -9 | | const C = MyInt(0b0000_0100); -10 | | } -11 | | } - | |_^ this field does not implement `Copy` - | - = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.rs deleted file mode 100644 index a6a3912aea30..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.rs +++ /dev/null @@ -1,13 +0,0 @@ -mod example { - use bitflags::bitflags; - - bitflags! { - pub struct Flags1: u32 { - const FLAG_A = 0b00000001; - } - } -} - -fn main() { - let flag1 = example::Flags1::FLAG_A.bits; -} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.stderr.beta b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.stderr.beta deleted file mode 100644 index 58a04660166a..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_field.stderr.beta +++ /dev/null @@ -1,10 +0,0 @@ -error[E0616]: field `bits` of struct `Flags1` is private - --> $DIR/private_field.rs:12:41 - | -12 | let flag1 = example::Flags1::FLAG_A.bits; - | ^^^^ private field - | -help: a method `bits` also exists, call it with parentheses - | -12 | let flag1 = example::Flags1::FLAG_A.bits(); - | ^^ diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.rs deleted file mode 100644 index 85a5b1863dd4..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.rs +++ /dev/null @@ -1,18 +0,0 @@ -mod example { - use bitflags::bitflags; - - bitflags! { - pub struct Flags1: u32 { - const FLAG_A = 0b00000001; - } - - struct Flags2: u32 { - const FLAG_B = 0b00000010; - } - } -} - -fn main() { - let flag1 = example::Flags1::FLAG_A; - let flag2 = example::Flags2::FLAG_B; -} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.stderr.beta b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.stderr.beta deleted file mode 100644 index d23f83209ba9..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/private_flags.stderr.beta +++ /dev/null @@ -1,18 +0,0 @@ -error[E0603]: struct `Flags2` is private - --> $DIR/private_flags.rs:17:26 - | -17 | let flag2 = example::Flags2::FLAG_B; - | ^^^^^^ private struct - | -note: the struct `Flags2` is defined here - --> $DIR/private_flags.rs:4:5 - | -4 | / bitflags! { -5 | | pub struct Flags1: u32 { -6 | | const FLAG_A = 0b00000001; -7 | | } -... | -11 | | } -12 | | } - | |_____^ - = note: this error originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.rs deleted file mode 100644 index b90f0ce92d1e..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.rs +++ /dev/null @@ -1,9 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - pub struct Flags1: u32 { - pub const FLAG_A = 0b00000001; - } -} - -fn main() {} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.stderr.beta b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.stderr.beta deleted file mode 100644 index b01122c7ad87..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-fail/visibility/pub_const.stderr.beta +++ /dev/null @@ -1,5 +0,0 @@ -error: no rules expected the token `pub` - --> $DIR/pub_const.rs:5:9 - | -5 | pub const FLAG_A = 0b00000001; - | ^^^ no rules expected this token in macro call diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/impls/convert.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/impls/convert.rs deleted file mode 100644 index 1f02982a8fa2..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/impls/convert.rs +++ /dev/null @@ -1,17 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - struct Flags: u32 { - const A = 0b00000001; - } -} - -impl From for Flags { - fn from(v: u32) -> Flags { - Flags::from_bits_truncate(v) - } -} - -fn main() { - -} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/impls/default.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/impls/default.rs deleted file mode 100644 index a97b6536f2b5..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/impls/default.rs +++ /dev/null @@ -1,10 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - #[derive(Default)] - struct Flags: u32 { - const A = 0b00000001; - } -} - -fn main() {} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/impls/inherent_methods.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/impls/inherent_methods.rs deleted file mode 100644 index 3052c460ec33..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/impls/inherent_methods.rs +++ /dev/null @@ -1,15 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - struct Flags: u32 { - const A = 0b00000001; - } -} - -impl Flags { - pub fn new() -> Flags { - Flags::A - } -} - -fn main() {} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/core.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/core.rs deleted file mode 100644 index 47549215948d..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/core.rs +++ /dev/null @@ -1,14 +0,0 @@ -use bitflags::bitflags; - -// Checks for possible errors caused by overriding names used by `bitflags!` internally. - -mod core {} -mod _core {} - -bitflags! { - struct Test: u8 { - const A = 1; - } -} - -fn main() {} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/stringify.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/stringify.rs deleted file mode 100644 index b04f2f6a4933..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/redefinition/stringify.rs +++ /dev/null @@ -1,19 +0,0 @@ -use bitflags::bitflags; - -// Checks for possible errors caused by overriding names used by `bitflags!` internally. - -#[allow(unused_macros)] -macro_rules! stringify { - ($($t:tt)*) => { "..." }; -} - -bitflags! { - struct Test: u8 { - const A = 1; - } -} - -fn main() { - // Just make sure we don't call the redefined `stringify` macro - assert_eq!(format!("{:?}", Test::A), "A"); -} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/repr/c.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/repr/c.rs deleted file mode 100644 index 6feba36ed82c..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/repr/c.rs +++ /dev/null @@ -1,10 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - #[repr(C)] - struct Flags: u32 { - const A = 0b00000001; - } -} - -fn main() {} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/repr/transparent.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/repr/transparent.rs deleted file mode 100644 index e38db4dd11b9..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/repr/transparent.rs +++ /dev/null @@ -1,10 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - #[repr(transparent)] - struct Flags: u32 { - const A = 0b00000001; - } -} - -fn main() {} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/visibility/bits_field.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/visibility/bits_field.rs deleted file mode 100644 index 33a7967e629e..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/visibility/bits_field.rs +++ /dev/null @@ -1,11 +0,0 @@ -use bitflags::bitflags; - -bitflags! { - pub struct Flags1: u32 { - const FLAG_A = 0b00000001; - } -} - -fn main() { - assert_eq!(0b00000001, Flags1::FLAG_A.bits); -} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/visibility/pub_in.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/visibility/pub_in.rs deleted file mode 100644 index c11050e3baf0..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile-pass/visibility/pub_in.rs +++ /dev/null @@ -1,19 +0,0 @@ -mod a { - mod b { - use bitflags::bitflags; - - bitflags! { - pub(in crate::a) struct Flags: u32 { - const FLAG_A = 0b00000001; - } - } - } - - pub fn flags() -> u32 { - b::Flags::FLAG_A.bits() - } -} - -fn main() { - assert_eq!(0b00000001, a::flags()); -} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile.rs b/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile.rs deleted file mode 100644 index ed02d01e9ca1..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/tests/compile.rs +++ /dev/null @@ -1,63 +0,0 @@ -use std::{ - fs, - ffi::OsStr, - io, - path::Path, -}; - -use walkdir::WalkDir; - -#[test] -fn fail() { - prepare_stderr_files("tests/compile-fail").unwrap(); - - let t = trybuild::TestCases::new(); - t.compile_fail("tests/compile-fail/**/*.rs"); -} - -#[test] -fn pass() { - let t = trybuild::TestCases::new(); - t.pass("tests/compile-pass/**/*.rs"); -} - -// Compiler messages may change between versions -// We don't want to have to track these too closely for `bitflags`, but -// having some message to check makes sure user-facing errors are sensical. -// -// The approach we use is to run the test on all compilers, but only check stderr -// output on beta (which is the next stable release). We do this by default ignoring -// any `.stderr` files in the `compile-fail` directory, and copying `.stderr.beta` files -// when we happen to be running on a beta compiler. -fn prepare_stderr_files(path: impl AsRef) -> io::Result<()> { - for entry in WalkDir::new(path) { - let entry = entry?; - - if entry.path().extension().and_then(OsStr::to_str) == Some("beta") { - let renamed = entry.path().with_extension(""); - - // Unconditionally remove a corresponding `.stderr` file for a `.stderr.beta` - // file if it exists. On `beta` compilers, we'll recreate it. On other compilers, - // we don't want to end up checking it anyways. - if renamed.exists() { - fs::remove_file(&renamed)?; - } - - rename_beta_stderr(entry.path(), renamed)?; - } - } - - Ok(()) -} - -#[rustversion::beta] -fn rename_beta_stderr(from: impl AsRef, to: impl AsRef) -> io::Result<()> { - fs::copy(from, to)?; - - Ok(()) -} - -#[rustversion::not(beta)] -fn rename_beta_stderr(_: impl AsRef, _: impl AsRef) -> io::Result<()> { - Ok(()) -} diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/.cargo_vcs_info.json new file mode 100644 index 000000000000..0db135b24ad9 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "1df4e3fe0f6bcb8845655d2ccefd9da5ef81a1cd" + }, + "path_in_vcs": "" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/.github/codecov.yml b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/.github/codecov.yml similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/.github/codecov.yml rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/.github/codecov.yml diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/.github/dependabot.yml b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/.github/dependabot.yml similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/.github/dependabot.yml rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/.github/dependabot.yml diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/.github/workflows/build.yml b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/.github/workflows/build.yml similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/.github/workflows/build.yml rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/.github/workflows/build.yml diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/.gitignore b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/.gitignore similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/.gitignore rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/.gitignore diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/CHANGELOG.md b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/CHANGELOG.md new file mode 100644 index 000000000000..1ac2f209b7ff --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/CHANGELOG.md @@ -0,0 +1,25 @@ +# [v0.10.1](https://github.com/multiformats/rust-cid/compare/v0.10.0...v0.10.1) (2023-01-09) + + +### Bug Fixes + +* the arb feature needs more multihash features ([#133](https://github.com/multiformats/rust-cid/issues/133)) ([ceca4d9](https://github.com/multiformats/rust-cid/commit/ceca4d93bd90f8ac30987bcc5814f6a655484787)) + + +# [v0.10.0](https://github.com/multiformats/rust-cid/compare/v0.9.0...v0.10.0) (2022-12-22) + + +### chore + +* upgrade to Rust edition 2021 and set MSRV ([#130](https://github.com/multiformats/rust-cid/issues/130)) ([91fd35e](https://github.com/multiformats/rust-cid/commit/91fd35e06f8ae24d66f6ba4598830d8dbc259c8a)) + + +### Features + +* add `encoded_len` and written bytes ([#129](https://github.com/multiformats/rust-cid/issues/129)) ([715771c](https://github.com/multiformats/rust-cid/commit/715771c48fd47969e733ed1faad8b82d9ddbd7ca)) + + +### BREAKING CHANGES + +* Return `Result` (instead of `Result<()>`) now from `Cid::write_bytes`. +* Rust edition 2021 is now used diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/Cargo.toml similarity index 91% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/Cargo.toml index 6e9f1a9b58e1..969f65ee6f01 100644 --- a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/Cargo.toml @@ -10,9 +10,10 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" +rust-version = "1.60" name = "cid" -version = "0.8.6" +version = "0.10.1" authors = ["Friedel Ziegelmayer "] description = "CID in rust" homepage = "https://github.com/multiformats/rust-cid" @@ -40,7 +41,7 @@ optional = true default-features = false [dependencies.multihash] -version = "0.16.2" +version = "0.18.0" default-features = false [dependencies.parity-scale-codec] @@ -50,11 +51,12 @@ optional = true default-features = false [dependencies.quickcheck] -version = "0.9.2" +version = "1.0" optional = true [dependencies.rand] -version = "0.7.3" +version = "0.8.5" +features = ["small_rng"] optional = true [dependencies.serde] @@ -84,6 +86,7 @@ arb = [ "quickcheck", "rand", "multihash/arb", + "multihash/multihash-impl", "multihash/sha2", "arbitrary", ] @@ -106,4 +109,5 @@ std = [ "unsigned-varint/std", "alloc", "multibase/std", + "serde/std", ] diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/Cargo.toml.orig similarity index 75% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/Cargo.toml.orig index bd1abec510c3..2cb24274d653 100644 --- a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/Cargo.toml.orig @@ -1,30 +1,31 @@ [package] name = "cid" -version = "0.8.6" +version = "0.10.1" description = "CID in rust" homepage = "https://github.com/multiformats/rust-cid" authors = ["Friedel Ziegelmayer "] keywords = ["ipld", "ipfs", "cid", "multihash", "multiformats"] license = "MIT" readme = "README.md" -edition = "2018" +edition = "2021" +rust-version = "1.60" [features] default = ["std", "multihash/default"] -std = ["multihash/std", "unsigned-varint/std", "alloc", "multibase/std"] +std = ["multihash/std", "unsigned-varint/std", "alloc", "multibase/std", "serde/std"] alloc = ["multibase", "multihash/alloc", "core2/alloc", "serde/alloc"] -arb = ["quickcheck", "rand", "multihash/arb", "multihash/sha2", "arbitrary"] +arb = ["quickcheck", "rand", "multihash/arb", "multihash/multihash-impl", "multihash/sha2", "arbitrary"] scale-codec = ["parity-scale-codec", "multihash/scale-codec"] serde-codec = ["alloc", "serde", "multihash/serde-codec", "serde_bytes"] [dependencies] -multihash = { version = "0.16.2", default-features = false } +multihash = { version = "0.18.0", default-features = false } unsigned-varint = { version = "0.7.0", default-features = false } multibase = { version = "0.9.1", optional = true, default-features = false } parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"], optional = true } -quickcheck = { version = "0.9.2", optional = true } -rand = { version = "0.7.3", optional = true } +quickcheck = { version = "1.0", optional = true } +rand = { version = "0.8.5", optional = true, features = ["small_rng"]} serde = { version = "1.0.116", default-features = false, optional = true } serde_bytes = { version = "0.11.5", optional = true } arbitrary = { version = "1.1.0", optional = true } @@ -33,3 +34,4 @@ core2 = { version = "0.4", default-features = false } [dev-dependencies] serde_json = "1.0.59" + diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/README.md b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/README.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/README.md rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/README.md diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/RELEASE.md b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/RELEASE.md new file mode 100644 index 000000000000..0d9a3cd0ee63 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/RELEASE.md @@ -0,0 +1,48 @@ +Release process +=============== + +Generating Changelog +-------------------- + +Install dependencies + +```sh +$ npm install -g conventional-changelog-cli +$ cd rust-cid +$ conventional-changelog --preset angular +``` + +Add the output of that to `CHANGELOG.md`, and write a human-centric summary of changes. +Update the linked output to reference the new version, which conventional-changelog doesn't know about: + +```md +# [](https://github.com/multiformats/rust-cid/compare/v0.9.0...v) (2022-12-22) +``` +becomes: +```md +# [v0.10.0](https://github.com/multiformats/rust-cid/compare/v0.9.0...v0.10.0) (2022-12-22) +``` + +## Publishing + +Publishing on crates.io, bumping version & generating tags is done using [`cargo-release`](https://github.com/crate-ci/cargo-release). + +This requires the following permissions + +- on github.com/multiformats/rust-cid + - creating tags + - pushing to `master` +- on crates.io + - publish access to all published crates + +Dry run + +```sh +$ cargo release +``` + +Actual publishing + +```sh +$ cargo release --execute +``` diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/examples/readme.rs b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/examples/readme.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/examples/readme.rs rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/examples/readme.rs diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/src/arb.rs b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/src/arb.rs similarity index 76% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/src/arb.rs rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/src/arb.rs index a5febfbd456c..63a69e8c1885 100644 --- a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/src/arb.rs +++ b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/src/arb.rs @@ -10,20 +10,21 @@ use rand::{ }; use arbitrary::{size_hint, Unstructured}; +use rand::SeedableRng; use crate::{CidGeneric, Version}; impl quickcheck::Arbitrary for Version { - fn arbitrary(g: &mut G) -> Self { - let version = if g.gen_bool(0.7) { 1 } else { 0 }; + fn arbitrary(g: &mut Gen) -> Self { + let version = u64::from(bool::arbitrary(g)); Version::try_from(version).unwrap() } } impl quickcheck::Arbitrary for CidGeneric { - fn arbitrary(g: &mut G) -> Self { - if S >= 32 && ::arbitrary(g) == Version::V0 { - let data: Vec = quickcheck::Arbitrary::arbitrary(g); + fn arbitrary(g: &mut Gen) -> Self { + if S >= 32 && Version::arbitrary(g) == Version::V0 { + let data: Vec = Vec::arbitrary(g); let hash = Code::Sha2_256 .digest(&data) .resize() @@ -34,15 +35,16 @@ impl quickcheck::Arbitrary for CidGeneric { // with bias towards smaller values. let weights = [128, 32, 4, 4, 2, 2, 1, 1]; let dist = WeightedIndex::new(weights.iter()).unwrap(); - let codec = match dist.sample(g) { - 0 => g.gen_range(0, u64::pow(2, 7)), - 1 => g.gen_range(u64::pow(2, 7), u64::pow(2, 14)), - 2 => g.gen_range(u64::pow(2, 14), u64::pow(2, 21)), - 3 => g.gen_range(u64::pow(2, 21), u64::pow(2, 28)), - 4 => g.gen_range(u64::pow(2, 28), u64::pow(2, 35)), - 5 => g.gen_range(u64::pow(2, 35), u64::pow(2, 42)), - 6 => g.gen_range(u64::pow(2, 42), u64::pow(2, 49)), - 7 => g.gen_range(u64::pow(2, 56), u64::pow(2, 63)), + let mut rng = rand::rngs::SmallRng::seed_from_u64(u64::arbitrary(g)); + let codec = match dist.sample(&mut rng) { + 0 => rng.gen_range(0..u64::pow(2, 7)), + 1 => rng.gen_range(u64::pow(2, 7)..u64::pow(2, 14)), + 2 => rng.gen_range(u64::pow(2, 14)..u64::pow(2, 21)), + 3 => rng.gen_range(u64::pow(2, 21)..u64::pow(2, 28)), + 4 => rng.gen_range(u64::pow(2, 28)..u64::pow(2, 35)), + 5 => rng.gen_range(u64::pow(2, 35)..u64::pow(2, 42)), + 6 => rng.gen_range(u64::pow(2, 42)..u64::pow(2, 49)), + 7 => rng.gen_range(u64::pow(2, 56)..u64::pow(2, 63)), _ => unreachable!(), }; diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/src/cid.rs b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/src/cid.rs similarity index 90% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/src/cid.rs rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/src/cid.rs index 1d4b75f94235..95614cd24fe0 100644 --- a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/src/cid.rs +++ b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/src/cid.rs @@ -76,7 +76,7 @@ pub struct Cid { impl Cid { /// Create a new CIDv0. pub const fn new_v0(hash: Multihash) -> Result { - if hash.code() != SHA2_256 { + if hash.code() != SHA2_256 || hash.size() != 32 { return Err(Error::InvalidCidV0Multihash); } Ok(Self { @@ -159,33 +159,53 @@ impl Cid { } } - fn write_bytes_v1(&self, mut w: W) -> Result<()> { + fn write_bytes_v1(&self, mut w: W) -> Result { let mut version_buf = varint_encode::u64_buffer(); let version = varint_encode::u64(self.version.into(), &mut version_buf); let mut codec_buf = varint_encode::u64_buffer(); let codec = varint_encode::u64(self.codec, &mut codec_buf); + let mut written = version.len() + codec.len(); + w.write_all(version)?; w.write_all(codec)?; - self.hash.write(&mut w)?; - Ok(()) + written += self.hash.write(&mut w)?; + + Ok(written) } - /// Writes the bytes to a byte stream. - pub fn write_bytes(&self, w: W) -> Result<()> { - match self.version { + /// Writes the bytes to a byte stream, returns the number of bytes written. + pub fn write_bytes(&self, w: W) -> Result { + let written = match self.version { Version::V0 => self.hash.write(w)?, Version::V1 => self.write_bytes_v1(w)?, + }; + Ok(written) + } + + /// Returns the length in bytes needed to encode this cid into bytes. + pub fn encoded_len(&self) -> usize { + match self.version { + Version::V0 => self.hash.encoded_len(), + Version::V1 => { + let mut version_buf = varint_encode::u64_buffer(); + let version = varint_encode::u64(self.version.into(), &mut version_buf); + + let mut codec_buf = varint_encode::u64_buffer(); + let codec = varint_encode::u64(self.codec, &mut codec_buf); + + version.len() + codec.len() + self.hash.encoded_len() + } } - Ok(()) } /// Returns the encoded bytes of the `Cid`. #[cfg(feature = "alloc")] pub fn to_bytes(&self) -> Vec { let mut bytes = Vec::new(); - self.write_bytes(&mut bytes).unwrap(); + let written = self.write_bytes(&mut bytes).unwrap(); + debug_assert_eq!(written, bytes.len()); bytes } diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/src/error.rs b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/src/error.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/src/error.rs rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/src/error.rs diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/src/lib.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/src/lib.rs diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/src/serde.rs b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/src/serde.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/src/serde.rs rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/src/serde.rs index 2583e8f3eda0..0da91a50f6c5 100644 --- a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/src/serde.rs +++ b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/src/serde.rs @@ -108,8 +108,6 @@ impl<'de, const SIZE: usize> de::Deserialize<'de> for CidGeneric { #[cfg(test)] mod tests { - use std::convert::TryFrom; - use crate::CidGeneric; #[test] diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/src/version.rs b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/src/version.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/src/version.rs rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/src/version.rs diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/tests/lib.rs b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/tests/lib.rs similarity index 94% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/tests/lib.rs rename to third_party/rust/chromium_crates_io/vendor/cid-0.10.1/tests/lib.rs index a976b02340db..eb807120bd19 100644 --- a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/tests/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/cid-0.10.1/tests/lib.rs @@ -150,6 +150,22 @@ fn explicit_v0_is_disallowed() { )); } +#[test] +fn new_v0_accepts_only_32_bytes() { + use multihash::Multihash; + const SHA2_256: u64 = 0x12; + + for i in 1..64 { + if i == 32 { + continue; + } + assert!(matches!( + Cid::new_v0(Multihash::wrap(SHA2_256, &vec![7; i]).unwrap()), + Err(Error::InvalidCidV0Multihash) + )); + } +} + fn a_function_that_takes_a_generic_cid(cid: &CidGeneric) -> String { cid.to_string() } diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/.cargo_vcs_info.json deleted file mode 100644 index 915bc0ccf809..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "1791fd3ba358bf0ab1eb8a7f5cb0be8cf6275ef4" - }, - "path_in_vcs": "" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/.cargo_vcs_info.json deleted file mode 100644 index 73f91d0472e1..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "61a52403808f73f7fcbefb7bbc64715fe44672ec" - }, - "path_in_vcs": "lib" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/README.md b/third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/README.md deleted file mode 100644 index 64d2dec6d7b7..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/README.md +++ /dev/null @@ -1,34 +0,0 @@ -[![CI Status][ci_badge]][ci] -[![Coverage Status][coveralls_badge]][coveralls] - -This library provides the following common encodings: - -| Name | Description | -| --- | --- | -| `HEXLOWER` | lowercase hexadecimal | -| `HEXLOWER_PERMISSIVE` | lowercase hexadecimal (case-insensitive decoding) | -| `HEXUPPER` | uppercase hexadecimal | -| `HEXUPPER_PERMISSIVE` | uppercase hexadecimal (case-insensitive decoding) | -| `BASE32` | RFC4648 base32 | -| `BASE32_NOPAD` | RFC4648 base32 (no padding) | -| `BASE32_DNSSEC` | RFC5155 base32 | -| `BASE32_DNSCURVE` | DNSCurve base32 | -| `BASE32HEX` | RFC4648 base32hex | -| `BASE32HEX_NOPAD` | RFC4648 base32hex (no padding) | -| `BASE64` | RFC4648 base64 | -| `BASE64_NOPAD` | RFC4648 base64 (no padding) | -| `BASE64_MIME` | RFC2045-like base64 | -| `BASE64URL` | RFC4648 base64url | -| `BASE64URL_NOPAD` | RFC4648 base64url (no padding) | - -It also provides the possibility to define custom little-endian ASCII -base-conversion encodings for bases of size 2, 4, 8, 16, 32, and 64 (for which -all above use-cases are particular instances). - -See the [documentation] for more details. - -[ci]: https://github.com/ia0/data-encoding/actions/workflows/ci.yml -[ci_badge]: https://github.com/ia0/data-encoding/actions/workflows/ci.yml/badge.svg -[coveralls]: https://coveralls.io/github/ia0/data-encoding?branch=master -[coveralls_badge]: https://coveralls.io/repos/github/ia0/data-encoding/badge.svg?branch=master -[documentation]: https://docs.rs/data-encoding diff --git a/third_party/rust/chromium_crates_io/vendor/cid-0.8.6/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/cid-0.8.6/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/.cargo_vcs_info.json new file mode 100644 index 000000000000..f1d5fd9d562f --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "18203b91ced11ac3284177d7a96e5cd6ad76c921" + }, + "path_in_vcs": "lib" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/Cargo.toml similarity index 91% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/Cargo.toml index 36294764a93a..0d224286b955 100644 --- a/third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/Cargo.toml @@ -11,9 +11,9 @@ [package] edition = "2018" -rust-version = "1.46" +rust-version = "1.48" name = "data-encoding" -version = "2.3.3" +version = "2.6.0" authors = ["Julien Cretin "] include = [ "Cargo.toml", @@ -37,6 +37,9 @@ categories = [ license = "MIT" repository = "https://github.com/ia0/data-encoding" +[package.metadata.docs.rs] +rustdoc-args = ["--cfg=docsrs"] + [features] alloc = [] default = ["std"] diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/Cargo.toml.orig similarity index 77% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/Cargo.toml.orig index 53bc65f870f8..aee1025ea0ef 100644 --- a/third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/Cargo.toml.orig @@ -1,10 +1,10 @@ [package] name = "data-encoding" -version = "2.3.3" +version = "2.6.0" authors = ["Julien Cretin "] license = "MIT" edition = "2018" -rust-version = "1.46" +rust-version = "1.48" keywords = ["no_std", "base64", "base32", "hex"] categories = ["encoding", "no-std"] readme = "README.md" @@ -13,6 +13,10 @@ documentation = "https://docs.rs/data-encoding" description = "Efficient and customizable data-encoding functions like base64, base32, and hex" include = ["Cargo.toml", "LICENSE", "README.md", "src/lib.rs"] +# TODO: Remove this once doc_auto_cfg is in the MSRV. +[package.metadata.docs.rs] +rustdoc-args = ["--cfg=docsrs"] + [features] default = ["std"] alloc = [] diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/LICENSE b/third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/LICENSE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/LICENSE rename to third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/LICENSE diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/README.md b/third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/README.md new file mode 100644 index 000000000000..f2d892e425e9 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/README.md @@ -0,0 +1,35 @@ +[![CI Status][ci_badge]][ci] +[![Coverage Status][coveralls_badge]][coveralls] + +This library provides the following common encodings: + +| Name | Description | +|--------------------------|---------------------------------------------------| +| `HEXLOWER` | lowercase hexadecimal | +| `HEXLOWER_PERMISSIVE` | lowercase hexadecimal (case-insensitive decoding) | +| `HEXUPPER` | uppercase hexadecimal | +| `HEXUPPER_PERMISSIVE` | uppercase hexadecimal (case-insensitive decoding) | +| `BASE32` | RFC4648 base32 | +| `BASE32_NOPAD` | RFC4648 base32 (no padding) | +| `BASE32_DNSSEC` | RFC5155 base32 | +| `BASE32_DNSCURVE` | DNSCurve base32 | +| `BASE32HEX` | RFC4648 base32hex | +| `BASE32HEX_NOPAD` | RFC4648 base32hex (no padding) | +| `BASE64` | RFC4648 base64 | +| `BASE64_NOPAD` | RFC4648 base64 (no padding) | +| `BASE64_MIME` | RFC2045-like base64 | +| `BASE64_MIME_PERMISSIVE` | RFC2045-like base64 (ignoring trailing bits) | +| `BASE64URL` | RFC4648 base64url | +| `BASE64URL_NOPAD` | RFC4648 base64url (no padding) | + +It also provides the possibility to define custom little-endian ASCII +base-conversion encodings for bases of size 2, 4, 8, 16, 32, and 64 (for which +all above use-cases are particular instances). + +See the [documentation] for more details. + +[ci]: https://github.com/ia0/data-encoding/actions/workflows/ci.yml +[ci_badge]: https://github.com/ia0/data-encoding/actions/workflows/ci.yml/badge.svg +[coveralls]: https://coveralls.io/github/ia0/data-encoding?branch=main +[coveralls_badge]: https://coveralls.io/repos/github/ia0/data-encoding/badge.svg?branch=main +[documentation]: https://docs.rs/data-encoding diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/src/lib.rs similarity index 90% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/src/lib.rs index 31df668d9602..ed8b194e3638 100644 --- a/third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/data-encoding-2.6.0/src/lib.rs @@ -70,21 +70,22 @@ //! # Properties //! //! The [`HEXUPPER`], [`BASE32`], [`BASE32HEX`], [`BASE64`], and [`BASE64URL`] predefined encodings -//! are conform to [RFC4648]. +//! conform to [RFC4648]. //! //! In general, the encoding and decoding functions satisfy the following properties: //! //! - They are deterministic: their output only depends on their input -//! - They have no side-effects: they do not modify a hidden mutable state -//! - They are correct: encoding then decoding gives the initial data -//! - They are canonical (unless [`is_canonical`] returns false): decoding then encoding gives the -//! initial data +//! - They have no side-effects: they do not modify any hidden mutable state +//! - They are correct: encoding followed by decoding gives the initial data +//! - They are canonical (unless [`is_canonical`] returns false): decoding followed by encoding +//! gives the initial data //! //! This last property is usually not satisfied by base64 implementations. This is a matter of //! choice and this crate has made the choice to let the user choose. Support for canonical encoding //! as described by the [RFC][canonical] is provided. But it is also possible to disable checking //! trailing bits, to add characters translation, to decode concatenated padded inputs, and to -//! ignore some characters. +//! ignore some characters. Note that non-canonical encodings may be an attack vector as described +//! in [Base64 Malleability in Practice](https://eprint.iacr.org/2022/361.pdf). //! //! Since the RFC specifies the encoding function on all inputs and the decoding function on all //! possible encoded outputs, the differences between implementations come from the decoding @@ -96,9 +97,9 @@ //! | Input | `data-encoding` | `base64` | GNU `base64` | //! | ---------- | --------------- | --------- | ------------- | //! | `AAB=` | `Trailing(2)` | `Last(2)` | `\x00\x00` | -//! | `AA\nB=` | `Length(4)` | `Length` | `\x00\x00` | -//! | `AAB` | `Length(0)` | `Last(2)` | Invalid input | -//! | `AAA` | `Length(0)` | `[0, 0]` | Invalid input | +//! | `AA\nB=` | `Length(4)` | `Byte(2)` | `\x00\x00` | +//! | `AAB` | `Length(0)` | `Padding` | Invalid input | +//! | `AAA` | `Length(0)` | `Padding` | Invalid input | //! | `A\rA\nB=` | `Length(4)` | `Byte(1)` | Invalid input | //! | `-_\r\n` | `Symbol(0)` | `Byte(0)` | Invalid input | //! | `AA==AA==` | `[0, 0]` | `Byte(2)` | `\x00\x00` | @@ -143,7 +144,22 @@ //! [wrapping]: struct.Specification.html#structfield.wrap #![no_std] -#![warn(unused_results, missing_docs)] +#![cfg_attr(docsrs, feature(doc_auto_cfg))] +// TODO: This list up to warn(clippy::pedantic) should ideally use a lint group. +#![warn(elided_lifetimes_in_paths)] +// TODO(msrv): #![warn(let_underscore_drop)] +#![warn(missing_debug_implementations)] +#![warn(missing_docs)] +#![warn(unreachable_pub)] +// TODO(msrv): #![warn(unsafe_op_in_unsafe_fn)] +#![warn(unused_results)] +#![allow(unused_unsafe)] // TODO(msrv) +#![warn(clippy::pedantic)] +#![allow(clippy::assigning_clones)] // TODO(msrv) +#![allow(clippy::doc_markdown)] +#![allow(clippy::enum_glob_use)] +#![allow(clippy::similar_names)] +#![allow(clippy::uninlined_format_args)] // TODO(msrv) #[cfg(feature = "alloc")] extern crate alloc; @@ -158,6 +174,7 @@ use alloc::string::String; use alloc::vec; #[cfg(feature = "alloc")] use alloc::vec::Vec; +use core::convert::TryInto; macro_rules! check { ($e: expr, $c: expr) => { @@ -240,19 +257,12 @@ macro_rules! dispatch { unsafe fn chunk_unchecked(x: &[u8], n: usize, i: usize) -> &[u8] { debug_assert!((i + 1) * n <= x.len()); - let ptr = x.as_ptr().add(n * i); - core::slice::from_raw_parts(ptr, n) + unsafe { core::slice::from_raw_parts(x.as_ptr().add(n * i), n) } } unsafe fn chunk_mut_unchecked(x: &mut [u8], n: usize, i: usize) -> &mut [u8] { debug_assert!((i + 1) * n <= x.len()); - let ptr = x.as_mut_ptr().add(n * i); - core::slice::from_raw_parts_mut(ptr, n) -} - -unsafe fn as_array(x: &[u8]) -> &[u8; 256] { - debug_assert_eq!(x.len(), 256); - &*(x.as_ptr() as *const [u8; 256]) + unsafe { core::slice::from_raw_parts_mut(x.as_mut_ptr().add(n * i), n) } } fn div_ceil(x: usize, m: usize) -> usize { @@ -291,7 +301,7 @@ pub enum DecodeKind { } impl core::fmt::Display for DecodeKind { - fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { let description = match self { DecodeKind::Length => "invalid length", DecodeKind::Symbol => "invalid symbol", @@ -318,7 +328,7 @@ pub struct DecodeError { impl std::error::Error for DecodeError {} impl core::fmt::Display for DecodeError { - fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { write!(f, "{} at {}", self.kind, self.position) } } @@ -382,7 +392,7 @@ fn encode_block, M: Static>( } for (i, output) in output.iter_mut().enumerate() { let y = x >> (bit * order(msb, dec(bit), i)); - *output = symbols[y as usize % 256]; + *output = symbols[(y & 0xff) as usize]; } } @@ -422,7 +432,7 @@ fn decode_block, M: Static>( x |= u64::from(y) << (bit * order(msb, dec(bit), j)); } for (j, output) in output.iter_mut().enumerate() { - *output = (x >> (8 * order(msb, enc(bit), j))) as u8; + *output = (x >> (8 * order(msb, enc(bit), j)) & 0xff) as u8; } Ok(()) } @@ -808,10 +818,6 @@ fn decode_wrap_mut, M: Static, P: Static, I: Static /// assert_eq!(msb.encode(&[0b01010011]), "01010011"); /// assert_eq!(lsb.encode(&[0b01010011]), "11001010"); /// ``` -/// -/// # Features -/// -/// Requires the `alloc` feature. #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[cfg(feature = "alloc")] pub enum BitOrder { @@ -874,7 +880,7 @@ pub type InternalEncoding = &'static [u8]; // - width % dec(bit) == 0 // - for all x in separator values[x] is IGNORE #[derive(Debug, Clone, PartialEq, Eq)] -pub struct Encoding(pub InternalEncoding); +pub struct Encoding(#[doc(hidden)] pub InternalEncoding); /// How to translate characters when decoding /// @@ -882,10 +888,6 @@ pub struct Encoding(pub InternalEncoding); /// of the `to` field. The second to the second. Etc. /// /// See [Specification](struct.Specification.html) for more information. -/// -/// # Features -/// -/// Requires the `alloc` feature. #[derive(Debug, Clone)] #[cfg(feature = "alloc")] pub struct Translate { @@ -899,10 +901,6 @@ pub struct Translate { /// How to wrap the output when encoding /// /// See [Specification](struct.Specification.html) for more information. -/// -/// # Features -/// -/// Requires the `alloc` feature. #[derive(Debug, Clone)] #[cfg(feature = "alloc")] pub struct Wrap { @@ -991,7 +989,7 @@ pub struct Wrap { /// ### Ignore characters when decoding /// /// Ignoring characters when decoding is useful if after encoding some characters are added for -/// convenience or any other reason (like wrapping). In that case we want to first ignore thoses +/// convenience or any other reason (like wrapping). In that case we want to first ignore those /// characters before decoding. /// /// To preserve correctness, ignored characters must not contain symbols or the padding character. @@ -1157,10 +1155,6 @@ pub struct Wrap { /// assert_eq!(base.decode(b"BOIl"), base.decode(b"b011")); /// ``` /// -/// # Features -/// -/// Requires the `alloc` feature. -/// /// [base-conversion]: https://en.wikipedia.org/wiki/Positional_notation#Base_conversion /// [canonical]: https://tools.ietf.org/html/rfc4648#section-3.5 #[derive(Debug, Clone)] @@ -1219,11 +1213,11 @@ impl Default for Specification { impl Encoding { fn sym(&self) -> &[u8; 256] { - unsafe { as_array(&self.0[0 .. 256]) } + self.0[0 .. 256].try_into().unwrap() } fn val(&self) -> &[u8; 256] { - unsafe { as_array(&self.0[256 .. 512]) } + self.0[256 .. 512].try_into().unwrap() } fn pad(&self) -> Option { @@ -1246,6 +1240,15 @@ impl Encoding { (self.0[513] & 0x7) as usize } + /// Minimum number of input and output blocks when encoding + fn block_len(&self) -> (usize, usize) { + let bit = self.bit(); + match self.wrap() { + Some((col, end)) => (col / dec(bit) * enc(bit), col + end.len()), + None => (enc(bit), dec(bit)), + } + } + fn wrap(&self) -> Option<(usize, &[u8])> { if self.0.len() <= 515 { return None; @@ -1262,6 +1265,7 @@ impl Encoding { /// See [`encode_mut`] for when to use it. /// /// [`encode_mut`]: struct.Encoding.html#method.encode_mut + #[must_use] pub fn encode_len(&self, len: usize) -> usize { dispatch! { let bit: usize = self.bit(); @@ -1314,10 +1318,6 @@ impl Encoding { /// BASE64.encode_append(input, &mut output); /// assert_eq!(output, "Result: SGVsbG8gd29ybGQ="); /// ``` - /// - /// # Features - /// - /// Requires the `alloc` feature. #[cfg(feature = "alloc")] pub fn encode_append(&self, input: &[u8], output: &mut String) { let output = unsafe { output.as_mut_vec() }; @@ -1326,6 +1326,50 @@ impl Encoding { self.encode_mut(input, &mut output[output_len ..]); } + /// Returns an object to encode a fragmented input and append it to `output` + /// + /// See the documentation of [`Encoder`] for more details and examples. + #[cfg(feature = "alloc")] + pub fn new_encoder<'a>(&'a self, output: &'a mut String) -> Encoder<'a> { + Encoder::new(self, output) + } + + /// Writes the encoding of `input` to `output` + /// + /// This allocates a buffer of 1024 bytes on the stack. If you want to control the buffer size + /// and location, use [`Encoding::encode_write_buffer()`] instead. + /// + /// # Errors + /// + /// Returns an error when writing to the output fails. + pub fn encode_write( + &self, input: &[u8], output: &mut impl core::fmt::Write, + ) -> core::fmt::Result { + self.encode_write_buffer(input, output, &mut [0; 1024]) + } + + /// Writes the encoding of `input` to `output` using a temporary `buffer` + /// + /// # Panics + /// + /// Panics if the buffer is shorter than 510 bytes. + /// + /// # Errors + /// + /// Returns an error when writing to the output fails. + pub fn encode_write_buffer( + &self, input: &[u8], output: &mut impl core::fmt::Write, buffer: &mut [u8], + ) -> core::fmt::Result { + assert!(510 <= buffer.len()); + let (enc, dec) = self.block_len(); + for input in input.chunks(buffer.len() / dec * enc) { + let buffer = &mut buffer[.. self.encode_len(input.len())]; + self.encode_mut(input, buffer); + output.write_str(unsafe { core::str::from_utf8_unchecked(buffer) })?; + } + Ok(()) + } + /// Returns encoded `input` /// /// # Examples @@ -1334,11 +1378,8 @@ impl Encoding { /// use data_encoding::BASE64; /// assert_eq!(BASE64.encode(b"Hello world"), "SGVsbG8gd29ybGQ="); /// ``` - /// - /// # Features - /// - /// Requires the `alloc` feature. #[cfg(feature = "alloc")] + #[must_use] pub fn encode(&self, input: &[u8]) -> String { let mut output = vec![0u8; self.encode_len(input.len())]; self.encode_mut(input, &mut output); @@ -1444,10 +1485,6 @@ impl Encoding { /// assert_eq!(BASE64.decode(b"SGVsbA==byB3b3JsZA==").unwrap(), b"Hello world"); /// ``` /// - /// # Features - /// - /// Requires the `alloc` feature. - /// /// [`Length`]: enum.DecodeKind.html#variant.Length /// [`Symbol`]: enum.DecodeKind.html#variant.Symbol /// [`Trailing`]: enum.DecodeKind.html#variant.Trailing @@ -1462,6 +1499,7 @@ impl Encoding { } /// Returns the bit-width + #[must_use] pub fn bit_width(&self) -> usize { self.bit() } @@ -1474,6 +1512,7 @@ impl Encoding { /// - padding is used /// - characters are ignored /// - characters are translated + #[must_use] pub fn is_canonical(&self) -> bool { if !self.ctb() { return false; @@ -1488,7 +1527,7 @@ impl Encoding { if val[i] >= 1 << bit { return false; } - if sym[val[i] as usize] != i as u8 { + if sym[val[i] as usize] as usize != i { return false; } } @@ -1496,11 +1535,9 @@ impl Encoding { } /// Returns the encoding specification - /// - /// # Features - /// - /// Requires the `alloc` feature. + #[allow(clippy::missing_panics_doc)] // no panic #[cfg(feature = "alloc")] + #[must_use] pub fn specification(&self) -> Specification { let mut specification = Specification::new(); specification @@ -1540,6 +1577,7 @@ impl Encoding { } #[doc(hidden)] + #[must_use] pub const fn internal_new(implementation: &'static [u8]) -> Encoding { #[cfg(feature = "alloc")] let encoding = Encoding(Cow::Borrowed(implementation)); @@ -1549,11 +1587,89 @@ impl Encoding { } #[doc(hidden)] + #[must_use] pub fn internal_implementation(&self) -> &[u8] { &self.0 } } +/// Encodes fragmented input to an output +/// +/// It is equivalent to use an [`Encoder`] with multiple calls to [`Encoder::append()`] than to +/// first concatenate all the input and then use [`Encoding::encode_append()`]. In particular, this +/// function will not introduce padding or wrapping between inputs. +/// +/// # Examples +/// +/// ```rust +/// // This is a bit inconvenient but we can't take a long-term reference to data_encoding::BASE64 +/// // because it's a constant. We need to use a static which has an address instead. This will be +/// // fixed in version 3 of the library. +/// static BASE64: data_encoding::Encoding = data_encoding::BASE64; +/// let mut output = String::new(); +/// let mut encoder = BASE64.new_encoder(&mut output); +/// encoder.append(b"hello"); +/// encoder.append(b"world"); +/// encoder.finalize(); +/// assert_eq!(output, BASE64.encode(b"helloworld")); +/// ``` +#[derive(Debug)] +#[cfg(feature = "alloc")] +pub struct Encoder<'a> { + encoding: &'a Encoding, + output: &'a mut String, + buffer: [u8; 255], + length: u8, +} + +#[cfg(feature = "alloc")] +impl<'a> Drop for Encoder<'a> { + fn drop(&mut self) { + self.encoding.encode_append(&self.buffer[.. self.length as usize], self.output); + } +} + +#[cfg(feature = "alloc")] +impl<'a> Encoder<'a> { + fn new(encoding: &'a Encoding, output: &'a mut String) -> Self { + Encoder { encoding, output, buffer: [0; 255], length: 0 } + } + + /// Encodes the provided input fragment and appends the result to the output + pub fn append(&mut self, mut input: &[u8]) { + #[allow(clippy::cast_possible_truncation)] // no truncation + let max = self.encoding.block_len().0 as u8; + if self.length != 0 { + let len = self.length; + #[allow(clippy::cast_possible_truncation)] // no truncation + let add = core::cmp::min((max - len) as usize, input.len()) as u8; + self.buffer[len as usize ..][.. add as usize].copy_from_slice(&input[.. add as usize]); + self.length += add; + input = &input[add as usize ..]; + if self.length != max { + debug_assert!(self.length < max); + debug_assert!(input.is_empty()); + return; + } + self.encoding.encode_append(&self.buffer[.. max as usize], self.output); + self.length = 0; + } + let len = floor(input.len(), max as usize); + self.encoding.encode_append(&input[.. len], self.output); + input = &input[len ..]; + #[allow(clippy::cast_possible_truncation)] // no truncation + let len = input.len() as u8; + self.buffer[.. len as usize].copy_from_slice(input); + self.length = len; + } + + /// Makes sure all inputs have been encoded and appended to the output + /// + /// This is equivalent to dropping the encoder and required for correctness, otherwise some + /// encoded data may be missing at the end. + pub fn finalize(self) {} +} + #[derive(Debug, Copy, Clone)] #[cfg(feature = "alloc")] enum SpecificationErrorImpl { @@ -1570,17 +1686,13 @@ enum SpecificationErrorImpl { use crate::SpecificationErrorImpl::*; /// Specification error -/// -/// # Features -/// -/// Requires the `alloc` feature. #[derive(Debug, Copy, Clone)] #[cfg(feature = "alloc")] pub struct SpecificationError(SpecificationErrorImpl); #[cfg(feature = "alloc")] impl core::fmt::Display for SpecificationError { - fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { match self.0 { BadSize => write!(f, "invalid number of symbols"), NotAscii => write!(f, "non-ascii character"), @@ -1613,6 +1725,7 @@ impl std::error::Error for SpecificationError { #[cfg(feature = "alloc")] impl Specification { /// Returns a default specification + #[must_use] pub fn new() -> Specification { Specification { symbols: String::new(), @@ -1632,7 +1745,7 @@ impl Specification { /// Returns an error if the specification is invalid. pub fn encoding(&self) -> Result { let symbols = self.symbols.as_bytes(); - let bit: usize = match symbols.len() { + let bit: u8 = match symbols.len() { 2 => 1, 4 => 2, 8 => 3, @@ -1652,6 +1765,7 @@ impl Specification { Ok(()) }; for (v, symbols) in symbols.iter().enumerate() { + #[allow(clippy::cast_possible_truncation)] // no truncation set(&mut values, *symbols, v as u8)?; } let msb = self.bit_order == MostSignificantFirst; @@ -1671,15 +1785,19 @@ impl Specification { let wrap = if self.wrap.separator.is_empty() || self.wrap.width == 0 { None } else { - Some((self.wrap.width, self.wrap.separator.as_bytes())) - }; - if let Some((col, end)) = wrap { + let col = self.wrap.width; + let end = self.wrap.separator.as_bytes(); check!(SpecificationError(WrapLength), col < 256 && end.len() < 256); - check!(SpecificationError(WrapWidth(dec(bit) as u8)), col % dec(bit) == 0); - for i in end.iter() { - set(&mut values, *i, IGNORE)?; + #[allow(clippy::cast_possible_truncation)] // no truncation + let col = col as u8; + #[allow(clippy::cast_possible_truncation)] // no truncation + let dec = dec(bit as usize) as u8; + check!(SpecificationError(WrapWidth(dec)), col % dec == 0); + for &i in end { + set(&mut values, i, IGNORE)?; } - } + Some((col, end)) + }; let from = self.translate.from.as_bytes(); let to = self.translate.to.as_bytes(); check!(SpecificationError(FromTo), from.len() == to.len()); @@ -1699,7 +1817,7 @@ impl Specification { None => encoding.push(INVALID), Some(pad) => encoding.push(pad), } - encoding.push(bit as u8); + encoding.push(bit); if msb { encoding[513] |= 0x08; } @@ -1707,7 +1825,7 @@ impl Specification { encoding[513] |= 0x10; } if let Some((col, end)) = wrap { - encoding.push(col as u8); + encoding.push(col); encoding.extend_from_slice(end); } else if values.contains(&IGNORE) { encoding.push(0); @@ -1933,7 +2051,7 @@ const HEXUPPER_PERMISSIVE_IMPL: &[u8] = &[ /// assert_eq!(BASE32, spec.encoding().unwrap()); /// ``` /// -/// It is conform to [RFC4648]. +/// It conforms to [RFC4648]. /// /// [RFC4648]: https://tools.ietf.org/html/rfc4648#section-6 pub const BASE32: Encoding = Encoding::internal_new(BASE32_IMPL); @@ -2014,7 +2132,7 @@ const BASE32_NOPAD_IMPL: &[u8] = &[ /// assert_eq!(BASE32HEX, spec.encoding().unwrap()); /// ``` /// -/// It is conform to [RFC4648]. +/// It conforms to [RFC4648]. /// /// [RFC4648]: https://tools.ietf.org/html/rfc4648#section-7 pub const BASE32HEX: Encoding = Encoding::internal_new(BASE32HEX_IMPL); @@ -2096,7 +2214,7 @@ const BASE32HEX_NOPAD_IMPL: &[u8] = &[ /// assert_eq!(BASE32_DNSSEC, spec.encoding().unwrap()); /// ``` /// -/// It is conform to [RFC5155]: +/// It conforms to [RFC5155]: /// /// - It uses a base32 extended hex alphabet. /// - It is case-insensitive when decoding and uses lowercase when encoding. @@ -2133,6 +2251,7 @@ const BASE32_DNSSEC_IMPL: &[u8] = &[ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 29, ]; +#[allow(clippy::doc_markdown)] /// DNSCurve base32 encoding /// /// This encoding is a static version of: @@ -2147,7 +2266,7 @@ const BASE32_DNSSEC_IMPL: &[u8] = &[ /// assert_eq!(BASE32_DNSCURVE, spec.encoding().unwrap()); /// ``` /// -/// It is conform to [DNSCurve]. +/// It conforms to [DNSCurve]. /// /// [DNSCurve]: https://dnscurve.org/in-implement.html pub const BASE32_DNSCURVE: Encoding = Encoding::internal_new(BASE32_DNSCURVE_IMPL); @@ -2192,7 +2311,7 @@ const BASE32_DNSCURVE_IMPL: &[u8] = &[ /// assert_eq!(BASE64, spec.encoding().unwrap()); /// ``` /// -/// It is conform to [RFC4648]. +/// It conforms to [RFC4648]. /// /// [RFC4648]: https://tools.ietf.org/html/rfc4648#section-4 pub const BASE64: Encoding = Encoding::internal_new(BASE64_IMPL); @@ -2268,7 +2387,7 @@ const BASE64_NOPAD_IMPL: &[u8] = &[ /// This encoding is a static version of: /// /// ```rust -/// # use data_encoding::{Specification, Wrap, BASE64_MIME}; +/// # use data_encoding::{Specification, BASE64_MIME}; /// let mut spec = Specification::new(); /// spec.symbols.push_str("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"); /// spec.padding = Some('='); @@ -2277,7 +2396,7 @@ const BASE64_NOPAD_IMPL: &[u8] = &[ /// assert_eq!(BASE64_MIME, spec.encoding().unwrap()); /// ``` /// -/// It is not exactly conform to [RFC2045] because it does not print the header +/// It does not exactly conform to [RFC2045] because it does not print the header /// and does not ignore all characters. /// /// [RFC2045]: https://tools.ietf.org/html/rfc2045 @@ -2310,6 +2429,54 @@ const BASE64_MIME_IMPL: &[u8] = &[ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 61, 30, 76, 13, 10, ]; +/// MIME base64 encoding without trailing bits check +/// +/// This encoding is a static version of: +/// +/// ```rust +/// # use data_encoding::{Specification, BASE64_MIME_PERMISSIVE}; +/// let mut spec = Specification::new(); +/// spec.symbols.push_str("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"); +/// spec.padding = Some('='); +/// spec.wrap.width = 76; +/// spec.wrap.separator.push_str("\r\n"); +/// spec.check_trailing_bits = false; +/// assert_eq!(BASE64_MIME_PERMISSIVE, spec.encoding().unwrap()); +/// ``` +/// +/// It does not exactly conform to [RFC2045] because it does not print the header +/// and does not ignore all characters. +/// +/// [RFC2045]: https://tools.ietf.org/html/rfc2045 +pub const BASE64_MIME_PERMISSIVE: Encoding = Encoding::internal_new(BASE64_MIME_PERMISSIVE_IMPL); +const BASE64_MIME_PERMISSIVE_IMPL: &[u8] = &[ + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 129, 128, 128, 129, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 62, 128, 128, 128, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 128, 128, 128, 130, 128, + 128, 128, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 128, 128, 128, 128, 128, 128, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 61, 14, 76, 13, 10, +]; + /// Padded base64url encoding /// /// This encoding is a static version of: @@ -2322,7 +2489,7 @@ const BASE64_MIME_IMPL: &[u8] = &[ /// assert_eq!(BASE64URL, spec.encoding().unwrap()); /// ``` /// -/// It is conform to [RFC4648]. +/// It conforms to [RFC4648]. /// /// [RFC4648]: https://tools.ietf.org/html/rfc4648#section-5 pub const BASE64URL: Encoding = Encoding::internal_new(BASE64URL_IMPL); diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/.cargo_vcs_info.json deleted file mode 100644 index 27d833e18049..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/.cargo_vcs_info.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "git": { - "sha1": "a564c2c82078a9af0b8368dc36b985434f72b013" - } -} diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-2.3.3/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/.cargo_vcs_info.json new file mode 100644 index 000000000000..747ce073ba2f --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "18203b91ced11ac3284177d7a96e5cd6ad76c921" + }, + "path_in_vcs": "lib/macro" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/Cargo.toml similarity index 54% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/Cargo.toml index e9c57d5d6a7e..72a49ebc61d2 100644 --- a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/Cargo.toml @@ -3,29 +3,44 @@ # When uploading crates to the registry Cargo will automatically # "normalize" Cargo.toml files for maximal compatibility # with all versions of Cargo and also rewrite `path` dependencies -# to registry (e.g., crates.io) dependencies +# to registry (e.g., crates.io) dependencies. # -# If you believe there's an error in this file please file an -# issue against the rust-lang/cargo repository. If you're -# editing this file be aware that the upstream Cargo.toml -# will likely look very different (and much more reasonable) +# If you are reading this file be aware that the original Cargo.toml +# will likely look very different (and much more reasonable). +# See Cargo.toml.orig for the original contents. [package] edition = "2018" +rust-version = "1.48" name = "data-encoding-macro" -version = "0.1.12" +version = "0.1.15" authors = ["Julien Cretin "] -include = ["Cargo.toml", "LICENSE", "README.md", "src/lib.rs"] +include = [ + "Cargo.toml", + "LICENSE", + "README.md", + "src/lib.rs", +] description = "Macros for data-encoding" documentation = "https://docs.rs/data-encoding-macro" readme = "README.md" -keywords = ["no_std", "base64", "base32", "hex", "macro"] -categories = ["encoding", "no-std"] +keywords = [ + "no_std", + "base64", + "base32", + "hex", + "macro", +] +categories = [ + "encoding", + "no-std", +] license = "MIT" repository = "https://github.com/ia0/data-encoding" + [dependencies.data-encoding] -version = "2.3" +version = "2.6.0" default-features = false [dependencies.data-encoding-macro-internal] -version = "0.1.10" +version = "0.1.13" diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/Cargo.toml.orig similarity index 72% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/Cargo.toml.orig index 9ed9999446b4..7c6b04ec05f3 100644 --- a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/Cargo.toml.orig @@ -1,9 +1,10 @@ [package] name = "data-encoding-macro" -version = "0.1.12" +version = "0.1.15" authors = ["Julien Cretin "] license = "MIT" edition = "2018" +rust-version = "1.48" keywords = ["no_std", "base64", "base32", "hex", "macro"] categories = ["encoding", "no-std"] readme = "README.md" @@ -13,5 +14,5 @@ description = "Macros for data-encoding" include = ["Cargo.toml", "LICENSE", "README.md", "src/lib.rs"] [dependencies] -data-encoding = { version = "2.3", path = "..", default-features = false } -data-encoding-macro-internal = { version = "0.1.10", path = "internal" } +data-encoding = { version = "2.6.0", path = "..", default-features = false } +data-encoding-macro-internal = { version = "0.1.13", path = "internal" } diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/LICENSE b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/LICENSE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/LICENSE rename to third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/LICENSE diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/README.md b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/README.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/README.md rename to third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/README.md diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/src/lib.rs similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/src/lib.rs index a0d808766193..a9fc6540b729 100644 --- a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.15/src/lib.rs @@ -246,6 +246,14 @@ make! { wrap_width: 76, wrap_separator: "\r\n", } +make! { + base64_mime_permissive base64_mime_permissive_array = BASE64_MIME_PERMISSIVE; + symbols: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", + padding: '=', + wrap_width: 76, + wrap_separator: "\r\n", + check_trailing_bits: false, +} make! { base64url base64url_array = BASE64URL; symbols: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/.cargo_vcs_info.json deleted file mode 100644 index 27d833e18049..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/.cargo_vcs_info.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "git": { - "sha1": "a564c2c82078a9af0b8368dc36b985434f72b013" - } -} diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-macro-0.1.12/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/.cargo_vcs_info.json new file mode 100644 index 000000000000..b7de4bdb990b --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "18203b91ced11ac3284177d7a96e5cd6ad76c921" + }, + "path_in_vcs": "lib/macro/internal" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/Cargo.toml similarity index 58% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/Cargo.toml index c6539abf2409..2939eca2948c 100644 --- a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/Cargo.toml @@ -3,19 +3,24 @@ # When uploading crates to the registry Cargo will automatically # "normalize" Cargo.toml files for maximal compatibility # with all versions of Cargo and also rewrite `path` dependencies -# to registry (e.g., crates.io) dependencies +# to registry (e.g., crates.io) dependencies. # -# If you believe there's an error in this file please file an -# issue against the rust-lang/cargo repository. If you're -# editing this file be aware that the upstream Cargo.toml -# will likely look very different (and much more reasonable) +# If you are reading this file be aware that the original Cargo.toml +# will likely look very different (and much more reasonable). +# See Cargo.toml.orig for the original contents. [package] edition = "2018" +rust-version = "1.48" name = "data-encoding-macro-internal" -version = "0.1.10" +version = "0.1.13" authors = ["Julien Cretin "] -include = ["Cargo.toml", "LICENSE", "README.md", "src/lib.rs"] +include = [ + "Cargo.toml", + "LICENSE", + "README.md", + "src/lib.rs", +] description = "Internal library for data-encoding-macro" readme = "README.md" license = "MIT" @@ -23,10 +28,16 @@ repository = "https://github.com/ia0/data-encoding" [lib] proc-macro = true + [dependencies.data-encoding] -version = "2.3" +version = "2.6.0" features = ["alloc"] default-features = false [dependencies.syn] version = "1" +features = [ + "parsing", + "proc-macro", +] +default-features = false diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/Cargo.toml.orig similarity index 58% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/Cargo.toml.orig index de806508426f..ba560b46ba48 100644 --- a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/Cargo.toml.orig @@ -1,9 +1,10 @@ [package] name = "data-encoding-macro-internal" -version = "0.1.10" +version = "0.1.13" authors = ["Julien Cretin "] license = "MIT" edition = "2018" +rust-version = "1.48" description = "Internal library for data-encoding-macro" readme = "README.md" repository = "https://github.com/ia0/data-encoding" @@ -12,6 +13,13 @@ include = ["Cargo.toml", "LICENSE", "README.md", "src/lib.rs"] [lib] proc-macro = true -[dependencies] -data-encoding = { version = "2.3", path = "../..", default-features = false, features = ["alloc"] } -syn = "1" +[dependencies.data-encoding] +version = "2.6.0" +path = "../.." +default-features = false +features = ["alloc"] + +[dependencies.syn] +version = "1" +default-features = false +features = ["parsing", "proc-macro"] diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/LICENSE b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/LICENSE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/LICENSE rename to third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/LICENSE diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/README.md b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/README.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/README.md rename to third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/README.md diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/src/lib.rs similarity index 84% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/src/lib.rs index f38eec3b3494..bb1ff332e44d 100644 --- a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.13/src/lib.rs @@ -9,11 +9,11 @@ #![warn(unused_results)] -use proc_macro::token_stream::IntoIter; -use proc_macro::{TokenStream, TokenTree}; use std::collections::HashMap; use data_encoding::{BitOrder, Encoding, Specification, Translate, Wrap}; +use proc_macro::token_stream::IntoIter; +use proc_macro::{TokenStream, TokenTree}; fn parse_op(tokens: &mut IntoIter, op: char, key: &str) { match tokens.next() { @@ -87,7 +87,7 @@ fn get_bool(map: &mut HashMap, key: &str) -> Option { }; match syn::parse::(node.into()) { Ok(result) => Some(result.value), - _ => panic!("expected bool for padding"), + _ => panic!("expected bool for {}", key), } } @@ -110,35 +110,31 @@ fn get_bit_order(map: &mut HashMap) -> BitOrder { } fn check_present(hash_map: &HashMap, key: &str) { - if !hash_map.contains_key(key) { - panic!("{} is required", key); - } + assert!(hash_map.contains_key(key), "{} is required", key); } -fn get_encoding(mut hash_map: &mut HashMap) -> Encoding { - check_present(&hash_map, "symbols"); +fn get_encoding(hash_map: &mut HashMap) -> Encoding { + check_present(hash_map, "symbols"); let spec = Specification { - symbols: get_string(&mut hash_map, "symbols"), - bit_order: get_bit_order(&mut hash_map), - check_trailing_bits: get_bool(&mut hash_map, "check_trailing_bits").unwrap_or(true), - padding: get_padding(&mut hash_map), - ignore: get_string(&mut hash_map, "ignore"), + symbols: get_string(hash_map, "symbols"), + bit_order: get_bit_order(hash_map), + check_trailing_bits: get_bool(hash_map, "check_trailing_bits").unwrap_or(true), + padding: get_padding(hash_map), + ignore: get_string(hash_map, "ignore"), wrap: Wrap { - width: get_usize(&mut hash_map, "wrap_width"), - separator: get_string(&mut hash_map, "wrap_separator"), + width: get_usize(hash_map, "wrap_width"), + separator: get_string(hash_map, "wrap_separator"), }, translate: Translate { - from: get_string(&mut hash_map, "translate_from"), - to: get_string(&mut hash_map, "translate_to"), + from: get_string(hash_map, "translate_from"), + to: get_string(hash_map, "translate_to"), }, }; spec.encoding().unwrap() } fn check_empty(hash_map: HashMap) { - if !hash_map.is_empty() { - panic!("Unexpected keys {:?}", hash_map.keys()); - } + assert!(hash_map.is_empty(), "Unexpected keys {:?}", hash_map.keys()); } #[proc_macro] diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/.cargo_vcs_info.json deleted file mode 100644 index 1755ce35fdeb..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "17e5a31cee866da7045272d6f99a4b9a7d53a94e" - }, - "path_in_vcs": "ipld/blockstore" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/CHANGELOG.md b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/CHANGELOG.md deleted file mode 100644 index 11c0d86e62da..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/CHANGELOG.md +++ /dev/null @@ -1,11 +0,0 @@ -# Changelog - -Changes to the FVM's Blockstore abstraction - -## [Unreleased] - -## 0.1.2 [2022-05-16] - -Remove blake2b feature from multihash (we don't need it here). This is technically a breaking change -as downstream could be relying on this (by accident), but they shouldn't be, so we're not going to -bother with a minor version bump. diff --git a/third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/data-encoding-macro-internal-0.1.10/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/.cargo_vcs_info.json new file mode 100644 index 000000000000..ad16577b8342 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "c39d880d086aa2e771c7190163436e02715d80f3" + }, + "path_in_vcs": "ipld/blockstore" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/CHANGELOG.md b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/CHANGELOG.md new file mode 100644 index 000000000000..15a9f7b681cc --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/CHANGELOG.md @@ -0,0 +1,28 @@ +# Changelog + +Changes to the FVM's Blockstore abstraction + +## [Unreleased] + +## 0.2.1 [2024-04-30] + +- Constify `Block::new`. +- Implement `PartialEq` between blocks with different underlying buffer types. +- Improve `Block` `Debug` implementation. + +## 0.2.0 [2023-06-28] + +Breaking Changes: + +- Update cid/multihash. This is a breaking change as it affects the API. + +## 0.1.2 [2023-05-03] + +- Impl blockstore for `Arc`. +- Add a `copy_to` method to the memory blockstore. + +## 0.1.1 [2022-05-16] + +Remove blake2b feature from multihash (we don't need it here). This is technically a breaking change +as downstream could be relying on this (by accident), but they shouldn't be, so we're not going to +bother with a minor version bump. diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/Cargo.toml similarity index 91% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/Cargo.toml index 2d1a2648f43a..cd2a142c0e6d 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/Cargo.toml @@ -10,9 +10,9 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" name = "fvm_ipld_blockstore" -version = "0.1.1" +version = "0.2.1" authors = [ "ChainSafe Systems ", "Protocol Labs", @@ -23,10 +23,10 @@ license = "MIT OR Apache-2.0" repository = "https://github.com/filecoin-project/ref-fvm" [dependencies.anyhow] -version = "1.0.51" +version = "1.0.71" [dependencies.cid] -version = "0.8.2" +version = "0.10.1" features = [ "serde-codec", "std", @@ -34,7 +34,7 @@ features = [ default-features = false [dependencies.multihash] -version = "0.16.1" +version = "0.18.1" features = ["multihash-impl"] default-features = false diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/Cargo.toml.orig similarity index 65% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/Cargo.toml.orig index 7cd97f209595..87f76a22655c 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/Cargo.toml.orig @@ -1,18 +1,18 @@ [package] name = "fvm_ipld_blockstore" description = "Sharded IPLD Blockstore." -version = "0.1.1" +version = "0.2.1" license = "MIT OR Apache-2.0" authors = ["ChainSafe Systems ", "Protocol Labs", "Filecoin Core Devs"] -edition = "2018" +edition = "2021" repository = "https://github.com/filecoin-project/ref-fvm" [dependencies] -cid = { version = "0.8.2", default-features = false, features = ["serde-codec", "std"] } -anyhow = "1.0.51" +cid = { workspace = true, features = ["serde-codec", "std"] } +anyhow = { workspace = true } # multihash is also re-exported by `cid`. Having `multihash` here as a # depdendency is needed to enable the features of the re-export. -multihash = { version = "0.16.1", default-features = false, features = ["multihash-impl"] } +multihash = { workspace = true, features = ["multihash-impl"] } [features] default = [] diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/src/block.rs b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/src/block.rs similarity index 51% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/src/block.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/src/block.rs index e25aaefaba48..9648bfb7e6b9 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/src/block.rs +++ b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/src/block.rs @@ -1,8 +1,12 @@ +use std::fmt; + +// Copyright 2021-2023 Protocol Labs +// SPDX-License-Identifier: Apache-2.0, MIT use cid::multihash::{self, MultihashDigest}; use cid::Cid; /// Block represents a typed (i.e., with codec) IPLD block. -#[derive(Copy, Clone, Debug, Eq, PartialEq)] +#[derive(Copy, Clone)] pub struct Block where D: AsRef<[u8]> + ?Sized, @@ -15,7 +19,7 @@ impl Block where D: AsRef<[u8]> + ?Sized, { - pub fn new(codec: u64, data: D) -> Self + pub const fn new(codec: u64, data: D) -> Self where Self: Sized, D: Sized, @@ -33,6 +37,31 @@ where } } +// Manually implement PartialEq/Eq so we can compare across blocks with different backing buffers. +impl PartialEq> for Block +where + D1: AsRef<[u8]>, + D2: AsRef<[u8]>, +{ + fn eq(&self, other: &Block) -> bool { + self.codec == other.codec && self.data.as_ref() == other.data.as_ref() + } +} +impl Eq for Block where D: AsRef<[u8]> {} + +// Manually implement debug so we get the same result regardless of the backing buff for data. +impl fmt::Debug for Block +where + D: AsRef<[u8]>, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("Block") + .field("codec", &self.codec) + .field("data", &self.data.as_ref()) + .finish() + } +} + impl AsRef<[u8]> for Block where D: AsRef<[u8]>, diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/src/lib.rs similarity index 56% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/src/lib.rs index 15a720d891a9..d131bb5cc7fd 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/src/lib.rs @@ -1,4 +1,7 @@ +// Copyright 2021-2023 Protocol Labs +// SPDX-License-Identifier: Apache-2.0, MIT use std::rc::Rc; +use std::sync::Arc; use anyhow::Result; use cid::{multihash, Cid}; @@ -85,88 +88,51 @@ pub trait Buffered: Blockstore { fn flush(&self, root: &Cid) -> Result<()>; } -impl Blockstore for &BS -where - BS: Blockstore, -{ - fn get(&self, k: &Cid) -> Result>> { - (*self).get(k) - } - - fn put_keyed(&self, k: &Cid, block: &[u8]) -> Result<()> { - (*self).put_keyed(k, block) - } - - fn has(&self, k: &Cid) -> Result { - (*self).has(k) - } - - fn put(&self, mh_code: multihash::Code, block: &Block) -> Result - where - Self: Sized, - D: AsRef<[u8]>, - { - (*self).put(mh_code, block) - } - - fn put_many(&self, blocks: I) -> Result<()> - where - Self: Sized, - D: AsRef<[u8]>, - I: IntoIterator)>, - { - (*self).put_many(blocks) - } - - fn put_many_keyed(&self, blocks: I) -> Result<()> - where - Self: Sized, - D: AsRef<[u8]>, - I: IntoIterator, - { - (*self).put_many_keyed(blocks) +macro_rules! impl_blockstore { + ($($typ:ty),+) => { + $( + impl Blockstore for $typ where + BS: Blockstore, { + fn get(&self, k: &Cid) -> Result>> { + (**self).get(k) + } + + fn put_keyed(&self, k: &Cid, block: &[u8]) -> Result<()> { + (**self).put_keyed(k, block) + } + + fn has(&self, k: &Cid) -> Result { + (**self).has(k) + } + + fn put(&self, mh_code: multihash::Code, block: &Block) -> Result + where + Self: Sized, + D: AsRef<[u8]>, + { + (**self).put(mh_code, block) + } + + fn put_many(&self, blocks: I) -> Result<()> + where + Self: Sized, + D: AsRef<[u8]>, + I: IntoIterator)>, + { + (**self).put_many(blocks) + } + + fn put_many_keyed(&self, blocks: I) -> Result<()> + where + Self: Sized, + D: AsRef<[u8]>, + I: IntoIterator, + { + (**self).put_many_keyed(blocks) + } + } + )+ } } -impl Blockstore for Rc -where - BS: Blockstore, -{ - fn get(&self, k: &Cid) -> Result>> { - (**self).get(k) - } - - fn put_keyed(&self, k: &Cid, block: &[u8]) -> Result<()> { - (**self).put_keyed(k, block) - } - - fn has(&self, k: &Cid) -> Result { - (**self).has(k) - } - - fn put(&self, mh_code: multihash::Code, block: &Block) -> Result - where - Self: Sized, - D: AsRef<[u8]>, - { - (**self).put(mh_code, block) - } - - fn put_many(&self, blocks: I) -> Result<()> - where - Self: Sized, - D: AsRef<[u8]>, - I: IntoIterator)>, - { - (**self).put_many(blocks) - } - - fn put_many_keyed(&self, blocks: I) -> Result<()> - where - Self: Sized, - D: AsRef<[u8]>, - I: IntoIterator, - { - (**self).put_many_keyed(blocks) - } -} +impl_blockstore!(Arc, Rc, &BS); diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/src/memory.rs b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/src/memory.rs similarity index 69% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/src/memory.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/src/memory.rs index 54a3a306a137..01cd9fbd6574 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/src/memory.rs +++ b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/src/memory.rs @@ -1,3 +1,5 @@ +// Copyright 2021-2023 Protocol Labs +// SPDX-License-Identifier: Apache-2.0, MIT use std::cell::RefCell; use std::collections::HashMap; @@ -15,6 +17,11 @@ impl MemoryBlockstore { pub fn new() -> Self { Self::default() } + + /// Copy all blocks from this blockstore into the target blockstore. + pub fn copy_to(&self, other: &impl Blockstore) -> Result<()> { + other.put_many_keyed(self.blocks.borrow().iter().map(|(&k, v)| (k, v))) + } } impl Blockstore for MemoryBlockstore { diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/src/tracking.rs b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/src/tracking.rs similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/src/tracking.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/src/tracking.rs index 244028162336..8ddc1cff56d1 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/src/tracking.rs +++ b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.2.1/src/tracking.rs @@ -1,3 +1,5 @@ +// Copyright 2021-2023 Protocol Labs +// SPDX-License-Identifier: Apache-2.0, MIT //#![cfg(feature = "tracking")] use std::cell::RefCell; diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/.cargo_vcs_info.json deleted file mode 100644 index 9b9c78d4e8de..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "f22f8d2c60d6f2f6442a442af1507f4b8acc2dcf" - }, - "path_in_vcs": "ipld/encoding" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_blockstore-0.1.1/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/.cargo_vcs_info.json new file mode 100644 index 000000000000..c3c6f83a2728 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "3ad5b90f35085e26585e47674844bb72ef09fb06" + }, + "path_in_vcs": "ipld/encoding" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/CHANGELOG.md b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/CHANGELOG.md similarity index 88% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/CHANGELOG.md rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/CHANGELOG.md index d7ce8f3c09fb..a9f917539cc7 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/CHANGELOG.md +++ b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/CHANGELOG.md @@ -2,6 +2,14 @@ Changes to the FVM's shared encoding utilities. +## [Unreleased] + +## 0.4.0 [2023-06-28) + +Breaking Changes: + +- Update cid/multihash. This is a breaking change as it affects the API. + ## 0.3.3 [2023-01-19] - Add the `CBOR` codec, and support it in `IpldBlock` diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/Cargo.toml similarity index 90% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/Cargo.toml index 96994dc1df8e..be40266be622 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/Cargo.toml @@ -12,7 +12,7 @@ [package] edition = "2021" name = "fvm_ipld_encoding" -version = "0.3.3" +version = "0.4.0" authors = [ "ChainSafe Systems ", "Protocol Labs", @@ -23,10 +23,10 @@ license = "MIT OR Apache-2.0" repository = "https://github.com/filecoin-project/ref-fvm" [dependencies.anyhow] -version = "1.0.56" +version = "1.0.71" [dependencies.cid] -version = "0.8.5" +version = "0.10.1" features = [ "serde-codec", "std", @@ -34,10 +34,10 @@ features = [ default-features = false [dependencies.fvm_ipld_blockstore] -version = "0.1" +version = "0.2" [dependencies.multihash] -version = "0.16.1" +version = "0.18.1" features = [ "blake2b", "multihash-impl", @@ -49,7 +49,7 @@ version = "1.0" features = ["derive"] [dependencies.serde_ipld_dagcbor] -version = "0.2.2" +version = "0.4.0" [dependencies.serde_repr] version = "0.1" @@ -61,7 +61,7 @@ version = "0.5" version = "1.0" [dev-dependencies.serde_json] -version = "1.0.79" +version = "1.0.99" [features] default = [] diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/Cargo.toml.orig similarity index 62% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/Cargo.toml.orig index 223c70a694b3..51b34c707423 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/Cargo.toml.orig @@ -1,7 +1,7 @@ [package] name = "fvm_ipld_encoding" description = "Sharded IPLD encoding." -version = "0.3.3" +version = "0.4.0" license = "MIT OR Apache-2.0" authors = ["ChainSafe Systems ", "Protocol Labs", "Filecoin Core Devs"] edition = "2021" @@ -9,19 +9,19 @@ repository = "https://github.com/filecoin-project/ref-fvm" [dependencies] serde = { version = "1.0", features = ["derive"] } -serde_ipld_dagcbor = "0.2.2" +serde_ipld_dagcbor = "0.4.0" serde_tuple = "0.5" serde_repr = "0.1" -cid = { version = "0.8.5", default-features = false, features = ["serde-codec", "std"] } +cid = { workspace = true, features = ["serde-codec", "std"] } thiserror = "1.0" -anyhow = "1.0.56" -fvm_ipld_blockstore = { version = "0.1", path = "../blockstore" } +anyhow = "1.0.71" +fvm_ipld_blockstore = { version = "0.2", path = "../blockstore" } # multihash is also re-exported by `cid`. Having `multihash` here as a # depdendency is needed to enable the features of the re-export. -multihash = { version = "0.16.1", default-features = false, features = ["blake2b", "multihash-impl"] } +multihash = { workspace = true, features = ["blake2b", "multihash-impl"] } [features] default = [] [dev-dependencies] -serde_json = "1.0.79" +serde_json = "1.0.99" diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/bytes.rs b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/bytes.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/bytes.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/bytes.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/cbor.rs b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/cbor.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/cbor.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/cbor.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/cbor_store.rs b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/cbor_store.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/cbor_store.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/cbor_store.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/errors.rs b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/errors.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/errors.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/errors.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/ipld_block.rs b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/ipld_block.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/ipld_block.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/ipld_block.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/lib.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/lib.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/raw.rs b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/raw.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/raw.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/raw.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/vec.rs b/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/vec.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/src/vec.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.4.0/src/vec.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_ipld_encoding-0.3.3/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/.cargo_vcs_info.json new file mode 100644 index 000000000000..131c83921405 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "3c5da7eafaa100132598b37a67d8c77c8605fabc" + }, + "path_in_vcs": "shared" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/CHANGELOG.md b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/CHANGELOG.md similarity index 85% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/CHANGELOG.md rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/CHANGELOG.md index 450206e2cd2b..becbaf50678d 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/CHANGELOG.md +++ b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/CHANGELOG.md @@ -2,6 +2,33 @@ ## [Unreleased] +## 3.10.0 [2024-06-12] + +- Update `filecoin-proofs-api` to v18 +- fix: remove the pairing feature from fvm_shared [#2009](https://github.com/filecoin-project/ref-fvm/pull/2009) + +## 3.6.0 (2023-09-06) + +- BREAKING: Upgrade the proofs API to v16. +- BREAKING (linking): upgrade blstrs to v0.7 and +- BREAKING: update the minimum rust version to 1.70.0 +- Update & trim some dependencies. +- Add support for the new proofs in v16. + +## 3.5.0 [2023-08-18] + +- Add the V21 network version constant + +## 3.4.0 [2023-06-27] + +Breaking Changes: + +- Update cid/multihash. This is a breaking change as it affects the API. + +## 3.3.1 [2023-05-04] + +Fix some address constants (lazy statics, to be precise) when the current network is set to "testnet". Previously, if said constants were evaluated _after_ switching to testnet mode (calling `address::set_current_network`), they'd fail to parse and crash the program when dereferenced. + ## 3.3.0 [2023-04-23] - Fixes an issue with proof bindings. diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/Cargo.toml similarity index 86% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/Cargo.toml index d0a0e452ca5b..db0fdf30b70e 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/Cargo.toml @@ -12,7 +12,7 @@ [package] edition = "2021" name = "fvm_shared" -version = "3.3.0" +version = "3.10.0" authors = [ "ChainSafe Systems ", "Protocol Labs", @@ -23,26 +23,27 @@ license = "MIT OR Apache-2.0" repository = "https://github.com/filecoin-project/ref-fvm" [dependencies.anyhow] -version = "1.0.51" +version = "1.0.71" [dependencies.arbitrary] -version = "1.1" +version = "1.3" features = ["derive"] optional = true [dependencies.bitflags] -version = "1.3.2" +version = "2.3.3" +features = ["serde"] [dependencies.blake2b_simd] -version = "1.0.0" +version = "1.0.1" [dependencies.bls-signatures] -version = "0.13" +version = "0.15" optional = true default-features = false [dependencies.cid] -version = "0.8.5" +version = "0.10.1" features = [ "serde-codec", "std", @@ -50,18 +51,18 @@ features = [ default-features = false [dependencies.data-encoding] -version = "2.3.2" +version = "2.4.0" [dependencies.data-encoding-macro] -version = "0.1.12" +version = "0.1.13" [dependencies.filecoin-proofs-api] -version = "14" +version = "18" optional = true default-features = false [dependencies.fvm_ipld_encoding] -version = "0.3" +version = "0.4" [dependencies.lazy_static] version = "1.4.0" @@ -71,20 +72,14 @@ version = "0.7" optional = true [dependencies.multihash] -version = "0.16.3" -features = [ - "multihash-impl", - "sha2", - "sha3", - "ripemd", -] +version = "0.18.1" default-features = false [dependencies.num-bigint] version = "0.4" [dependencies.num-derive] -version = "0.3" +version = "0.4" [dependencies.num-integer] version = "0.1" @@ -110,7 +105,7 @@ version = "1.0" version = "0.7.1" [dev-dependencies.multihash] -version = "0.16.3" +version = "0.18.1" features = [ "multihash-impl", "sha2", @@ -119,6 +114,9 @@ features = [ ] default-features = false +[dev-dependencies.quickcheck_macros] +version = "1" + [dev-dependencies.rand] version = "0.8" @@ -126,7 +124,7 @@ version = "0.8" version = "0.3" [dev-dependencies.serde_json] -version = "1.0.56" +version = "1.0.99" [features] arb = [ @@ -141,7 +139,6 @@ crypto = [ "proofs", ] default = [] -pairing = ["bls-signatures/pairing"] proofs = ["filecoin-proofs-api"] secp256k1 = ["libsecp256k1"] testing = [] diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/Cargo.toml.orig similarity index 57% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/Cargo.toml.orig index 713d1f3d8d94..2c8198595ac4 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/Cargo.toml.orig @@ -1,45 +1,48 @@ [package] name = "fvm_shared" description = "Filecoin Virtual Machine shared types and functions" -version = "3.3.0" +version = "3.10.0" edition = "2021" license = "MIT OR Apache-2.0" authors = ["ChainSafe Systems ", "Protocol Labs", "Filecoin Core Devs"] repository = "https://github.com/filecoin-project/ref-fvm" [dependencies] -blake2b_simd = "1.0.0" +blake2b_simd = "1.0.1" thiserror = "1.0" num-traits = "0.2" -num-derive = "0.3" +num-derive = "0.4" num-bigint = "0.4" num-integer = "0.1" -data-encoding = "2.3.2" -data-encoding-macro = "0.1.12" +data-encoding = "2.4.0" +data-encoding-macro = "0.1.13" lazy_static = "1.4.0" -cid = { version = "0.8.5", default-features = false, features = ["serde-codec", "std"] } -multihash = { version = "0.16.3", default-features = false, features = ["multihash-impl", "sha2", "sha3", "ripemd"] } +cid = { workspace = true, features = ["serde-codec", "std"] } +multihash = { workspace = true } unsigned-varint = "0.7.1" -anyhow = "1.0.51" -fvm_ipld_encoding = { version = "0.3", path = "../ipld/encoding" } +anyhow = "1.0.71" +fvm_ipld_encoding = { version = "0.4" } serde = { version = "1", default-features = false } serde_tuple = "0.5" -arbitrary = { version = "1.1", optional = true, features = ["derive"]} +arbitrary = { version = "1.3", optional = true, features = ["derive"] } quickcheck = { version = "1", optional = true } -bitflags = "1.3.2" +bitflags = { version = "2.3.3", features = ["serde"] } ## non-wasm dependencies; these dependencies and the respective code is ## only activated through non-default features, which the Kernel enables, but ## not the actors. -filecoin-proofs-api = { version = "14", default-features = false, optional = true } +filecoin-proofs-api = { version = "18", default-features = false, optional = true } libsecp256k1 = { version = "0.7", optional = true } -bls-signatures = { version = "0.13", default-features = false, optional = true } +bls-signatures = { version = "0.15", default-features = false, optional = true } [dev-dependencies] rand = "0.8" rand_chacha = "0.3" -serde_json = "1.0.56" -multihash = { version = "0.16.3", default-features = false, features = ["multihash-impl", "sha2", "sha3", "ripemd"] } +serde_json = "1.0.99" +multihash = { workspace = true, features = ["multihash-impl", "sha2", "sha3", "ripemd"] } +quickcheck_macros = "1" + +fvm_shared = { path = ".", features = ["arb"] } [features] default = [] @@ -47,6 +50,5 @@ crypto = ["libsecp256k1", "blst", "proofs"] proofs = ["filecoin-proofs-api"] secp256k1 = ["libsecp256k1"] blst = ["bls-signatures/blst"] -pairing = ["bls-signatures/pairing"] testing = [] arb = ["arbitrary", "dep:quickcheck", "num-bigint/quickcheck"] diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/address/errors.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/address/errors.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/address/errors.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/address/errors.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/address/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/address/mod.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/address/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/address/mod.rs index 063b27290244..c4367ae8bf5d 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/address/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/address/mod.rs @@ -46,7 +46,7 @@ pub const FIRST_NON_SINGLETON_ADDR: ActorID = 100; lazy_static::lazy_static! { static ref BLS_ZERO_ADDR_BYTES: [u8; BLS_PUB_LEN] = { - let bz_addr = Address::from_str("f3yaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaby2smx7a"); + let bz_addr = Network::Mainnet.parse_address("f3yaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaby2smx7a"); if let Ok(Address {payload: Payload::BLS(pubkey), ..}) = bz_addr { pubkey } else { diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/address/network.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/address/network.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/address/network.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/address/network.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/address/payload.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/address/payload.rs similarity index 91% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/address/payload.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/address/payload.rs index 34af880bad60..8c71c9c038a7 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/address/payload.rs +++ b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/address/payload.rs @@ -25,10 +25,12 @@ pub struct DelegatedAddress { #[cfg(feature = "arb")] impl quickcheck::Arbitrary for DelegatedAddress { fn arbitrary(g: &mut quickcheck::Gen) -> Self { + let length = usize::arbitrary(g) % (MAX_SUBADDRESS_LEN + 1); + let buffer = from_fn(|idx| if idx < length { u8::arbitrary(g) } else { 0u8 }); Self { namespace: ActorID::arbitrary(g), - length: usize::arbitrary(g) % (MAX_SUBADDRESS_LEN + 1), - buffer: from_fn(|_| u8::arbitrary(g)), + length, + buffer, } } } @@ -36,11 +38,17 @@ impl quickcheck::Arbitrary for DelegatedAddress { #[cfg(feature = "arb")] impl<'a> arbitrary::Arbitrary<'a> for DelegatedAddress { fn arbitrary(u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result { - Ok(DelegatedAddress { + let length = u.int_in_range(0usize..=MAX_SUBADDRESS_LEN)?; + let mut buffer = [0u8; MAX_SUBADDRESS_LEN]; + for b in buffer.iter_mut().take(length) { + *b = arbitrary::Arbitrary::arbitrary(u)?; + } + let addr = DelegatedAddress { namespace: arbitrary::Arbitrary::arbitrary(u)?, - length: u.int_in_range(0usize..=MAX_SUBADDRESS_LEN)?, - buffer: arbitrary::Arbitrary::arbitrary(u)?, - }) + length, + buffer, + }; + Ok(addr) } } diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/address/protocol.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/address/protocol.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/address/protocol.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/address/protocol.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/bigint/bigint_ser.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/bigint/bigint_ser.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/bigint/bigint_ser.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/bigint/bigint_ser.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/bigint/biguint_ser.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/bigint/biguint_ser.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/bigint/biguint_ser.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/bigint/biguint_ser.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/bigint/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/bigint/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/bigint/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/bigint/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/chainid/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/chainid/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/chainid/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/chainid/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/clock/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/clock/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/clock/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/clock/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/clock/quantize.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/clock/quantize.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/clock/quantize.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/clock/quantize.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/commcid/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/commcid/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/commcid/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/commcid/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/consensus/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/consensus/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/consensus/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/consensus/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/crypto/hash.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/crypto/hash.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/crypto/hash.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/crypto/hash.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/crypto/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/crypto/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/crypto/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/crypto/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/crypto/signature.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/crypto/signature.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/crypto/signature.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/crypto/signature.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/deal/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/deal/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/deal/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/deal/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/econ/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/econ/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/econ/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/econ/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/error/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/error/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/error/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/error/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/event/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/event/mod.rs similarity index 94% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/event/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/event/mod.rs index c9c3e5dd4959..a57d2097f296 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/event/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/event/mod.rs @@ -38,12 +38,12 @@ impl From> for ActorEvent { bitflags! { /// Flags associated with an Event entry. - #[derive(Deserialize, Serialize)] + #[derive(Deserialize, Serialize, Copy, Clone, Eq, PartialEq, Debug)] #[serde(transparent)] pub struct Flags: u64 { const FLAG_INDEXED_KEY = 0b00000001; const FLAG_INDEXED_VALUE = 0b00000010; - const FLAG_INDEXED_ALL = Self::FLAG_INDEXED_KEY.bits | Self::FLAG_INDEXED_VALUE.bits; + const FLAG_INDEXED_ALL = Self::FLAG_INDEXED_KEY.bits() | Self::FLAG_INDEXED_VALUE.bits(); } } diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/lib.rs similarity index 94% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/lib.rs index 35c3531a7725..765281597afa 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/lib.rs @@ -43,7 +43,7 @@ lazy_static! { /// Zero address used to avoid allowing it to be used for verification. /// This is intentionally disallowed because it is an edge case with Filecoin's BLS /// signature verification. - pub static ref ZERO_ADDRESS: Address = "f3yaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaby2smx7a".parse().unwrap(); + pub static ref ZERO_ADDRESS: Address = address::Network::Mainnet.parse_address("f3yaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaby2smx7a").unwrap(); } /// Codec for raw data. diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/math.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/math.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/math.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/math.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/message.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/message.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/message.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/message.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/piece/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/piece/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/piece/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/piece/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/piece/zero.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/piece/zero.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/piece/zero.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/piece/zero.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/randomness/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/randomness/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/randomness/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/randomness/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/receipt.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/receipt.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/receipt.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/receipt.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/reward.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/reward.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/reward.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/reward.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sector/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sector/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sector/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sector/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sector/post.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sector/post.rs similarity index 88% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sector/post.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sector/post.rs index cb7aad49d084..a2b77e08ee1b 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sector/post.rs +++ b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sector/post.rs @@ -45,10 +45,15 @@ impl quickcheck::Arbitrary for PoStProof { RegisteredPoStProof::StackedDRGWindow512MiBV1, RegisteredPoStProof::StackedDRGWindow32GiBV1, RegisteredPoStProof::StackedDRGWindow64GiBV1, + RegisteredPoStProof::StackedDRGWindow2KiBV1P1, + RegisteredPoStProof::StackedDRGWindow8MiBV1P1, + RegisteredPoStProof::StackedDRGWindow512MiBV1P1, + RegisteredPoStProof::StackedDRGWindow32GiBV1P1, + RegisteredPoStProof::StackedDRGWindow64GiBV1P1, ]) .unwrap(); PoStProof { - post_proof: (*registered_postproof).into(), + post_proof: *registered_postproof, proof_bytes: Vec::arbitrary(g), } } diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sector/registered_proof.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sector/registered_proof.rs similarity index 74% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sector/registered_proof.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sector/registered_proof.rs index b92fda1d25a5..2535c19b55ea 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sector/registered_proof.rs +++ b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sector/registered_proof.rs @@ -12,6 +12,7 @@ use crate::clock; use crate::version::NetworkVersion; /// Seal proof type which defines the version and sector size. +#[allow(non_camel_case_types)] #[derive(PartialEq, Eq, Copy, Clone, Debug, Hash)] pub enum RegisteredSealProof { StackedDRG2KiBV1, @@ -25,6 +26,12 @@ pub enum RegisteredSealProof { StackedDRG8MiBV1P1, StackedDRG32GiBV1P1, StackedDRG64GiBV1P1, + + StackedDRG2KiBV1P1_Feat_SyntheticPoRep, + StackedDRG512MiBV1P1_Feat_SyntheticPoRep, + StackedDRG8MiBV1P1_Feat_SyntheticPoRep, + StackedDRG32GiBV1P1_Feat_SyntheticPoRep, + StackedDRG64GiBV1P1_Feat_SyntheticPoRep, // TODO: get rid of this option once we no longer need go compat. // We use it to ensure that we can deserialize bad values here because go checks this value // later. @@ -77,12 +84,22 @@ impl RegisteredSealProof { pub fn proof_size(self) -> Result { use RegisteredSealProof::*; match self { - StackedDRG2KiBV1 | StackedDRG512MiBV1 | StackedDRG8MiBV1 | StackedDRG2KiBV1P1 - | StackedDRG512MiBV1P1 | StackedDRG8MiBV1P1 => Ok(192), - - StackedDRG32GiBV1 | StackedDRG64GiBV1 | StackedDRG32GiBV1P1 | StackedDRG64GiBV1P1 => { - Ok(1920) - } + StackedDRG2KiBV1 + | StackedDRG512MiBV1 + | StackedDRG8MiBV1 + | StackedDRG2KiBV1P1 + | StackedDRG512MiBV1P1 + | StackedDRG8MiBV1P1 + | StackedDRG2KiBV1P1_Feat_SyntheticPoRep + | StackedDRG512MiBV1P1_Feat_SyntheticPoRep + | StackedDRG8MiBV1P1_Feat_SyntheticPoRep => Ok(192), + + StackedDRG32GiBV1 + | StackedDRG64GiBV1 + | StackedDRG32GiBV1P1 + | StackedDRG64GiBV1P1 + | StackedDRG32GiBV1P1_Feat_SyntheticPoRep + | StackedDRG64GiBV1P1_Feat_SyntheticPoRep => Ok(1920), Invalid(i) => Err(format!("unsupported proof type: {}", i)), } } @@ -189,11 +206,21 @@ impl RegisteredSealProof { pub fn sector_size(self) -> Result { use RegisteredSealProof::*; match self { - StackedDRG2KiBV1 | StackedDRG2KiBV1P1 => Ok(SectorSize::_2KiB), - StackedDRG8MiBV1 | StackedDRG8MiBV1P1 => Ok(SectorSize::_8MiB), - StackedDRG512MiBV1 | StackedDRG512MiBV1P1 => Ok(SectorSize::_512MiB), - StackedDRG32GiBV1 | StackedDRG32GiBV1P1 => Ok(SectorSize::_32GiB), - StackedDRG64GiBV1 | StackedDRG64GiBV1P1 => Ok(SectorSize::_64GiB), + StackedDRG2KiBV1 | StackedDRG2KiBV1P1 | StackedDRG2KiBV1P1_Feat_SyntheticPoRep => { + Ok(SectorSize::_2KiB) + } + StackedDRG8MiBV1 | StackedDRG8MiBV1P1 | StackedDRG8MiBV1P1_Feat_SyntheticPoRep => { + Ok(SectorSize::_8MiB) + } + StackedDRG512MiBV1 + | StackedDRG512MiBV1P1 + | StackedDRG512MiBV1P1_Feat_SyntheticPoRep => Ok(SectorSize::_512MiB), + StackedDRG32GiBV1 | StackedDRG32GiBV1P1 | StackedDRG32GiBV1P1_Feat_SyntheticPoRep => { + Ok(SectorSize::_32GiB) + } + StackedDRG64GiBV1 | StackedDRG64GiBV1P1 | StackedDRG64GiBV1P1_Feat_SyntheticPoRep => { + Ok(SectorSize::_64GiB) + } Invalid(i) => Err(format!("unsupported proof type: {}", i)), } } @@ -204,11 +231,17 @@ impl RegisteredSealProof { // Resolve to seal proof and then compute size from that. use RegisteredSealProof::*; match self { - StackedDRG64GiBV1 | StackedDRG64GiBV1P1 => Ok(2300), - StackedDRG32GiBV1 | StackedDRG32GiBV1P1 => Ok(2349), - StackedDRG2KiBV1 | StackedDRG2KiBV1P1 => Ok(2), - StackedDRG8MiBV1 | StackedDRG8MiBV1P1 => Ok(2), - StackedDRG512MiBV1 | StackedDRG512MiBV1P1 => Ok(2), + StackedDRG64GiBV1 | StackedDRG64GiBV1P1 | StackedDRG64GiBV1P1_Feat_SyntheticPoRep => { + Ok(2300) + } + StackedDRG32GiBV1 | StackedDRG32GiBV1P1 | StackedDRG32GiBV1P1_Feat_SyntheticPoRep => { + Ok(2349) + } + StackedDRG2KiBV1 | StackedDRG2KiBV1P1 | StackedDRG2KiBV1P1_Feat_SyntheticPoRep => Ok(2), + StackedDRG8MiBV1 | StackedDRG8MiBV1P1 | StackedDRG8MiBV1P1_Feat_SyntheticPoRep => Ok(2), + StackedDRG512MiBV1 + | StackedDRG512MiBV1P1 + | StackedDRG512MiBV1P1_Feat_SyntheticPoRep => Ok(2), Invalid(i) => Err(format!("unsupported proof type: {}", i)), } } @@ -218,11 +251,21 @@ impl RegisteredSealProof { pub fn registered_winning_post_proof(self) -> Result { use RegisteredPoStProof::*; match self { - Self::StackedDRG64GiBV1 | Self::StackedDRG64GiBV1P1 => Ok(StackedDRGWinning64GiBV1), - Self::StackedDRG32GiBV1 | Self::StackedDRG32GiBV1P1 => Ok(StackedDRGWinning32GiBV1), - Self::StackedDRG2KiBV1 | Self::StackedDRG2KiBV1P1 => Ok(StackedDRGWinning2KiBV1), - Self::StackedDRG8MiBV1 | Self::StackedDRG8MiBV1P1 => Ok(StackedDRGWinning8MiBV1), - Self::StackedDRG512MiBV1 | Self::StackedDRG512MiBV1P1 => Ok(StackedDRGWinning512MiBV1), + Self::StackedDRG64GiBV1 + | Self::StackedDRG64GiBV1P1 + | Self::StackedDRG64GiBV1P1_Feat_SyntheticPoRep => Ok(StackedDRGWinning64GiBV1), + Self::StackedDRG32GiBV1 + | Self::StackedDRG32GiBV1P1 + | Self::StackedDRG32GiBV1P1_Feat_SyntheticPoRep => Ok(StackedDRGWinning32GiBV1), + Self::StackedDRG2KiBV1 + | Self::StackedDRG2KiBV1P1 + | Self::StackedDRG2KiBV1P1_Feat_SyntheticPoRep => Ok(StackedDRGWinning2KiBV1), + Self::StackedDRG8MiBV1 + | Self::StackedDRG8MiBV1P1 + | Self::StackedDRG8MiBV1P1_Feat_SyntheticPoRep => Ok(StackedDRGWinning8MiBV1), + Self::StackedDRG512MiBV1 + | Self::StackedDRG512MiBV1P1 + | Self::StackedDRG512MiBV1P1_Feat_SyntheticPoRep => Ok(StackedDRGWinning512MiBV1), Self::Invalid(_) => Err(format!( "Unsupported mapping from {:?} to PoSt-winning RegisteredProof", self @@ -235,11 +278,21 @@ impl RegisteredSealProof { pub fn registered_window_post_proof(self) -> Result { use RegisteredPoStProof::*; match self { - Self::StackedDRG64GiBV1 | Self::StackedDRG64GiBV1P1 => Ok(StackedDRGWindow64GiBV1P1), - Self::StackedDRG32GiBV1 | Self::StackedDRG32GiBV1P1 => Ok(StackedDRGWindow32GiBV1P1), - Self::StackedDRG2KiBV1 | Self::StackedDRG2KiBV1P1 => Ok(StackedDRGWindow2KiBV1P1), - Self::StackedDRG8MiBV1 | Self::StackedDRG8MiBV1P1 => Ok(StackedDRGWindow8MiBV1P1), - Self::StackedDRG512MiBV1 | Self::StackedDRG512MiBV1P1 => Ok(StackedDRGWindow512MiBV1P1), + Self::StackedDRG64GiBV1 + | Self::StackedDRG64GiBV1P1 + | Self::StackedDRG64GiBV1P1_Feat_SyntheticPoRep => Ok(StackedDRGWindow64GiBV1P1), + Self::StackedDRG32GiBV1 + | Self::StackedDRG32GiBV1P1 + | Self::StackedDRG32GiBV1P1_Feat_SyntheticPoRep => Ok(StackedDRGWindow32GiBV1P1), + Self::StackedDRG2KiBV1 + | Self::StackedDRG2KiBV1P1 + | Self::StackedDRG2KiBV1P1_Feat_SyntheticPoRep => Ok(StackedDRGWindow2KiBV1P1), + Self::StackedDRG8MiBV1 + | Self::StackedDRG8MiBV1P1 + | Self::StackedDRG8MiBV1P1_Feat_SyntheticPoRep => Ok(StackedDRGWindow8MiBV1P1), + Self::StackedDRG512MiBV1 + | Self::StackedDRG512MiBV1P1 + | Self::StackedDRG512MiBV1P1_Feat_SyntheticPoRep => Ok(StackedDRGWindow512MiBV1P1), Self::Invalid(_) => Err(format!( "Unsupported mapping from {:?} to PoSt-window RegisteredProof", self @@ -251,11 +304,21 @@ impl RegisteredSealProof { pub fn registered_update_proof(self) -> Result { use RegisteredUpdateProof::*; match self { - Self::StackedDRG64GiBV1 | Self::StackedDRG64GiBV1P1 => Ok(StackedDRG64GiBV1), - Self::StackedDRG32GiBV1 | Self::StackedDRG32GiBV1P1 => Ok(StackedDRG32GiBV1), - Self::StackedDRG2KiBV1 | Self::StackedDRG2KiBV1P1 => Ok(StackedDRG2KiBV1), - Self::StackedDRG8MiBV1 | Self::StackedDRG8MiBV1P1 => Ok(StackedDRG8MiBV1), - Self::StackedDRG512MiBV1 | Self::StackedDRG512MiBV1P1 => Ok(StackedDRG512MiBV1), + Self::StackedDRG64GiBV1 + | Self::StackedDRG64GiBV1P1 + | Self::StackedDRG64GiBV1P1_Feat_SyntheticPoRep => Ok(StackedDRG64GiBV1), + Self::StackedDRG32GiBV1 + | Self::StackedDRG32GiBV1P1 + | Self::StackedDRG32GiBV1P1_Feat_SyntheticPoRep => Ok(StackedDRG32GiBV1), + Self::StackedDRG2KiBV1 + | Self::StackedDRG2KiBV1P1 + | Self::StackedDRG2KiBV1P1_Feat_SyntheticPoRep => Ok(StackedDRG2KiBV1), + Self::StackedDRG8MiBV1 + | Self::StackedDRG8MiBV1P1 + | Self::StackedDRG8MiBV1P1_Feat_SyntheticPoRep => Ok(StackedDRG8MiBV1), + Self::StackedDRG512MiBV1 + | Self::StackedDRG512MiBV1P1 + | Self::StackedDRG512MiBV1P1_Feat_SyntheticPoRep => Ok(StackedDRG512MiBV1), Self::Invalid(_) => Err(format!( "Unsupported mapping from {:?} to Update RegisteredProof", self @@ -336,6 +399,12 @@ i64_conversion! { StackedDRG512MiBV1P1 => 7, StackedDRG32GiBV1P1 => 8, StackedDRG64GiBV1P1 => 9, + + StackedDRG2KiBV1P1_Feat_SyntheticPoRep => 10, + StackedDRG8MiBV1P1_Feat_SyntheticPoRep => 11, + StackedDRG512MiBV1P1_Feat_SyntheticPoRep => 12, + StackedDRG32GiBV1P1_Feat_SyntheticPoRep => 13, + StackedDRG64GiBV1P1_Feat_SyntheticPoRep => 14, } i64_conversion! { @@ -381,6 +450,21 @@ impl TryFrom for filecoin_proofs_api::RegisteredSealProof { StackedDRG2KiBV1P1 => Ok(Self::StackedDrg2KiBV1_1), StackedDRG8MiBV1P1 => Ok(Self::StackedDrg8MiBV1_1), StackedDRG512MiBV1P1 => Ok(Self::StackedDrg512MiBV1_1), + StackedDRG64GiBV1P1_Feat_SyntheticPoRep => { + Ok(Self::StackedDrg64GiBV1_1_Feat_SyntheticPoRep) + } + StackedDRG32GiBV1P1_Feat_SyntheticPoRep => { + Ok(Self::StackedDrg32GiBV1_1_Feat_SyntheticPoRep) + } + StackedDRG2KiBV1P1_Feat_SyntheticPoRep => { + Ok(Self::StackedDrg2KiBV1_1_Feat_SyntheticPoRep) + } + StackedDRG8MiBV1P1_Feat_SyntheticPoRep => { + Ok(Self::StackedDrg8MiBV1_1_Feat_SyntheticPoRep) + } + StackedDRG512MiBV1P1_Feat_SyntheticPoRep => { + Ok(Self::StackedDrg512MiBV1_1_Feat_SyntheticPoRep) + } Invalid(i) => Err(format!("unsupported proof type: {}", i)), } } diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sector/seal.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sector/seal.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sector/seal.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sector/seal.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/smooth/alpha_beta_filter.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/smooth/alpha_beta_filter.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/smooth/alpha_beta_filter.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/smooth/alpha_beta_filter.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/smooth/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/smooth/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/smooth/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/smooth/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/smooth/smooth_func.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/smooth/smooth_func.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/smooth/smooth_func.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/smooth/smooth_func.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/state/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/state/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/state/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/state/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sys/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sys/mod.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sys/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sys/mod.rs index 1425e6c20123..2517c0bcd227 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sys/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sys/mod.rs @@ -51,7 +51,7 @@ impl<'a> TryFrom<&'a crate::econ::TokenAmount> for TokenAmount { bitflags! { /// Flags passed to the send syscall. - #[derive(Default)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Debug)] #[repr(transparent)] // note: this is 64 bits because I don't want to hate my past self, not because we need them // right now. It doesn't really cost anything anyways. diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sys/out.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sys/out.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sys/out.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sys/out.rs index e350f425a537..3b64d1fc5b06 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/sys/out.rs +++ b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/sys/out.rs @@ -66,7 +66,7 @@ pub mod vm { bitflags! { /// Invocation flags pertaining to the currently executing actor. - #[derive(Default)] + #[derive(Default, Copy, Clone, Eq, PartialEq, Debug)] #[repr(transparent)] pub struct ContextFlags: u64 { /// Invocation is in "read-only" mode. Any balance transfers, sends that would create diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/version/mod.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/version/mod.rs similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/version/mod.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/version/mod.rs index 7f99207550af..439d97cfeb27 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/src/version/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/src/version/mod.rs @@ -55,6 +55,8 @@ impl NetworkVersion { pub const V19: Self = Self(19); /// Thunder (builtin-actors v11) pub const V20: Self = Self(20); + /// Watermelon (builtin-actors v12) + pub const V21: Self = Self(21); pub const MAX: Self = Self(u32::MAX); diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/tests/address_test.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/tests/address_test.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/tests/address_test.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/tests/address_test.rs index 65f3418d8fbc..0ce8bc4929a8 100644 --- a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/tests/address_test.rs +++ b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/tests/address_test.rs @@ -10,6 +10,7 @@ use fvm_ipld_encoding::{from_slice, to_vec}; use fvm_shared::address::{ Address, Error, Protocol, BLS_PUB_LEN, MAX_SUBADDRESS_LEN, PAYLOAD_HASH_LEN, SECP_PUB_LEN, }; +use quickcheck_macros::quickcheck; #[test] fn bytes() { @@ -608,3 +609,14 @@ fn invalid_strings_tests() { assert!(Address::from_str(st).is_err()); } } + +#[quickcheck] +fn prop_address_roundtrip(addr0: Address) -> Result<(), String> { + let bz = addr0.to_bytes(); + let addr1 = + Address::from_bytes(&bz).map_err(|e| format!("error deserializing address: {e}"))?; + if addr1 != addr0 { + return Err("address differs after roundtrip".to_owned()); + } + Ok(()) +} diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/tests/commcid_tests.rs b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/tests/commcid_tests.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/tests/commcid_tests.rs rename to third_party/rust/chromium_crates_io/vendor/fvm_shared-3.10.0/tests/commcid_tests.rs diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/.cargo_vcs_info.json deleted file mode 100644 index 27a044b4e137..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "5fcae00317c98d7ad140d70ca00b2c5b1fa9fe30" - }, - "path_in_vcs": "shared" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.cargo_vcs_info.json deleted file mode 100644 index aeb60bd93fd4..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "52b4a7fcfdb8b74fd2f1148fd11ba05fee3583c3" - }, - "path_in_vcs": "" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.envrc b/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.envrc deleted file mode 100644 index 7c7e8995816b..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.envrc +++ /dev/null @@ -1,6 +0,0 @@ -use_flake() { - watch_file flake.nix - watch_file flake.lock - eval "$(nix print-dev-env)" -} -use flake diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.github/workflows/nix.yml b/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.github/workflows/nix.yml deleted file mode 100644 index 245db446b3f4..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.github/workflows/nix.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: "Nix flakes CI" -on: - pull_request: - push: - branches: - - main - - master -jobs: - tests: - runs-on: ubuntu-latest - env: - NIX_BUILD_ARGS: -v --print-build-logs --fallback --show-trace - steps: - - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v13 - with: - install_url: https://nixos-nix-install-tests.cachix.org/serve/i6laym9jw3wg9mw6ncyrk6gjx4l34vvx/install - install_options: '--tarball-url-prefix https://nixos-nix-install-tests.cachix.org/serve' - extra_nix_config: | - experimental-features = nix-command flakes - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - - uses: cachix/cachix-action@v10 - with: - name: yatima - authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - - name: Nix build - run: nix build $NIX_BUILD_ARGS - - name: Nix check - run: nix flake check $NIX_BUILD_ARGS - - name: Nix shell - run: nix shell $NIX_BUILD_ARGS --command echo OK diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/Cargo.lock b/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/Cargo.lock deleted file mode 100644 index bc23e8c5a12c..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/Cargo.lock +++ /dev/null @@ -1,1104 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "aho-corasick" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" -dependencies = [ - "memchr", -] - -[[package]] -name = "arbitrary" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c38b6b6b79f671c25e1a3e785b7b82d7562ffc9cd3efdc98627e5668a2472490" - -[[package]] -name = "arrayref" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" - -[[package]] -name = "arrayvec" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "blake2b_simd" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72936ee4afc7f8f736d1c38383b56480b5497b4617b4a77bdbf1d2ababc76127" -dependencies = [ - "arrayref", - "arrayvec", - "constant_time_eq", -] - -[[package]] -name = "blake2s_simd" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db539cc2b5f6003621f1cd9ef92d7ded8ea5232c7de0f9faa2de251cd98730d4" -dependencies = [ - "arrayref", - "arrayvec", - "constant_time_eq", -] - -[[package]] -name = "blake3" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f" -dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if", - "constant_time_eq", -] - -[[package]] -name = "block-buffer" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" -dependencies = [ - "generic-array", -] - -[[package]] -name = "bstr" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" -dependencies = [ - "lazy_static", - "memchr", - "regex-automata", - "serde", -] - -[[package]] -name = "bumpalo" -version = "3.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" - -[[package]] -name = "byte-slice-cast" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87c5fdd0166095e1d463fc6cc01aa8ce547ad77a4e84d42eb6762b084e28067e" - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "cast" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c24dab4283a142afa2fdca129b80ad2c6284e073930f964c3a1293c225ee39a" -dependencies = [ - "rustc_version", -] - -[[package]] -name = "cc" -version = "1.0.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "clap" -version = "2.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" -dependencies = [ - "bitflags", - "textwrap", - "unicode-width", -] - -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - -[[package]] -name = "core2" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" -dependencies = [ - "memchr", -] - -[[package]] -name = "cpufeatures" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" -dependencies = [ - "libc", -] - -[[package]] -name = "criterion" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10" -dependencies = [ - "atty", - "cast", - "clap", - "criterion-plot", - "csv", - "itertools", - "lazy_static", - "num-traits", - "oorandom", - "plotters", - "rayon", - "regex", - "serde", - "serde_cbor", - "serde_derive", - "serde_json", - "tinytemplate", - "walkdir", -] - -[[package]] -name = "criterion-plot" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d00996de9f2f7559f7f4dc286073197f83e92256a59ed395f9aac01fe717da57" -dependencies = [ - "cast", - "itertools", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" -dependencies = [ - "cfg-if", - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" -dependencies = [ - "autocfg", - "cfg-if", - "crossbeam-utils", - "lazy_static", - "memoffset", - "scopeguard", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" -dependencies = [ - "cfg-if", - "lazy_static", -] - -[[package]] -name = "crypto-common" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "csv" -version = "1.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" -dependencies = [ - "bstr", - "csv-core", - "itoa 0.4.8", - "ryu", - "serde", -] - -[[package]] -name = "csv-core" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" -dependencies = [ - "memchr", -] - -[[package]] -name = "digest" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "either" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" - -[[package]] -name = "env_logger" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" -dependencies = [ - "log", - "regex", -] - -[[package]] -name = "generic-array" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "half" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "itertools" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" - -[[package]] -name = "js-sys" -version = "0.3.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "keccak" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.121" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f" - -[[package]] -name = "log" -version = "0.4.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "memchr" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" - -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - -[[package]] -name = "multihash" -version = "0.16.3" -dependencies = [ - "arbitrary", - "blake2b_simd", - "blake2s_simd", - "blake3", - "core2", - "criterion", - "digest", - "hex", - "multihash-derive", - "parity-scale-codec", - "quickcheck", - "rand", - "ripemd", - "serde", - "serde-big-array", - "serde_json", - "sha-1", - "sha2", - "sha3", - "strobe-rs", - "unsigned-varint", -] - -[[package]] -name = "multihash-derive" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcd" -dependencies = [ - "proc-macro-crate", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "num-traits" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "oorandom" -version = "11.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" - -[[package]] -name = "parity-scale-codec" -version = "3.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8b44461635bbb1a0300f100a841e571e7d919c81c73075ef5d152ffdb521066" -dependencies = [ - "arrayvec", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "3.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c45ed1f39709f5a89338fab50e59816b2e8815f5bb58276e7ddf9afd495f73f8" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "plotters" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a3fd9ec30b9749ce28cd91f255d569591cdf937fe280c312143e3c4bad6f2a" -dependencies = [ - "num-traits", - "plotters-backend", - "plotters-svg", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "plotters-backend" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d88417318da0eaf0fdcdb51a0ee6c3bed624333bff8f946733049380be67ac1c" - -[[package]] -name = "plotters-svg" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521fa9638fa597e1dc53e9412a4f9cefb01187ee1f7413076f9e6749e2885ba9" -dependencies = [ - "plotters-backend", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" - -[[package]] -name = "proc-macro-crate" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" -dependencies = [ - "thiserror", - "toml", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "quickcheck" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f" -dependencies = [ - "env_logger", - "log", - "rand", - "rand_core", -] - -[[package]] -name = "quote" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "632d02bff7f874a36f33ea8bb416cd484b90cc66c1194b1a1110d067a7013f58" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom", - "libc", - "rand_chacha", - "rand_core", - "rand_hc", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core", -] - -[[package]] -name = "rayon" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" -dependencies = [ - "autocfg", - "crossbeam-deque", - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "lazy_static", - "num_cpus", -] - -[[package]] -name = "regex" -version = "1.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" - -[[package]] -name = "regex-syntax" -version = "0.6.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" - -[[package]] -name = "ripemd" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1facec54cb5e0dc08553501fa740091086d0259ad0067e0d4103448e4cb22ed3" -dependencies = [ - "digest", -] - -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver", -] - -[[package]] -name = "ryu" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "semver" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4" - -[[package]] -name = "serde" -version = "1.0.136" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde-big-array" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd31f59f6fe2b0c055371bb2f16d7f0aa7d8881676c04a55b1596d1a17cd10a4" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_cbor" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" -dependencies = [ - "half", - "serde", -] - -[[package]] -name = "serde_derive" -version = "1.0.136" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" -dependencies = [ - "itoa 1.0.1", - "ryu", - "serde", -] - -[[package]] -name = "sha-1" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha2" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha3" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881bf8156c87b6301fc5ca6b27f11eeb2761224c7081e69b409d5a1951a70c86" -dependencies = [ - "digest", - "keccak", -] - -[[package]] -name = "strobe-rs" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eeeca13db3ebad86026e7c7cad15f5779507c6053bb196207d142430bcbee1d" -dependencies = [ - "bitflags", - "byteorder", - "keccak", - "subtle", - "zeroize", -] - -[[package]] -name = "subtle" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" - -[[package]] -name = "syn" -version = "1.0.90" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704df27628939572cd88d33f171cd6f896f4eaca85252c6e0a72d8d8287ee86f" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "unicode-xid", -] - -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "thiserror" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tinytemplate" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "toml" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" -dependencies = [ - "serde", -] - -[[package]] -name = "typenum" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" - -[[package]] -name = "unicode-width" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" - -[[package]] -name = "unicode-xid" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" - -[[package]] -name = "unsigned-varint" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "walkdir" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" -dependencies = [ - "same-file", - "winapi", - "winapi-util", -] - -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasm-bindgen" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" -dependencies = [ - "bumpalo", - "lazy_static", - "log", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" - -[[package]] -name = "web-sys" -version = "0.3.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "zeroize" -version = "1.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb5728b8afd3f280a869ce1d4c554ffaed35f45c231fc41bfbd0381bef50317" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/flake.lock b/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/flake.lock deleted file mode 100644 index f90eb3864085..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/flake.lock +++ /dev/null @@ -1,103 +0,0 @@ -{ - "nodes": { - "flake-utils": { - "locked": { - "lastModified": 1631561581, - "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { - "locked": { - "lastModified": 1631561581, - "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "naersk": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1618844365, - "narHash": "sha256-Z9t0rr+5OG/ru3jdg3jivfYVU4ydV/nqt8UwIut7uHs=", - "owner": "yatima-inc", - "repo": "naersk", - "rev": "32e3ba39d9d83098b13720a4384bdda191dd0445", - "type": "github" - }, - "original": { - "owner": "yatima-inc", - "repo": "naersk", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1634238079, - "narHash": "sha256-TMYcwX6srjt+DbZx4LHWWGUQPE1jFRDvHtVHISoyEzE=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "c254c77513d68256f22014c733d937a5d7554f7d", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "flake-utils": "flake-utils", - "naersk": "naersk", - "nixpkgs": "nixpkgs", - "utils": "utils" - } - }, - "utils": { - "inputs": { - "flake-utils": "flake-utils_2", - "naersk": [ - "naersk" - ], - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1634241547, - "narHash": "sha256-Mc4MremspwPgYpopOLeDxZBLewWCSJp/K6R3tFR52F0=", - "owner": "yatima-inc", - "repo": "nix-utils", - "rev": "b5b7817c29858401259b3076fc987e8426fb8a4a", - "type": "github" - }, - "original": { - "owner": "yatima-inc", - "repo": "nix-utils", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/flake.nix b/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/flake.nix deleted file mode 100644 index f368229ebd1b..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/flake.nix +++ /dev/null @@ -1,71 +0,0 @@ -{ - description = "Rust multihash implementation"; - inputs = { - nixpkgs.url = github:nixos/nixpkgs; - flake-utils = { - url = github:numtide/flake-utils; - inputs.nixpkgs.follows = "nixpkgs"; - }; - naersk = { - url = github:yatima-inc/naersk; - inputs.nixpkgs.follows = "nixpkgs"; - }; - utils = { - url = github:yatima-inc/nix-utils; - inputs.nixpkgs.follows = "nixpkgs"; - inputs.naersk.follows = "naersk"; - }; - }; - - outputs = - { self - , nixpkgs - , flake-utils - , utils - , naersk - }: - let - # Only use the supported systems - supportedSystems = builtins.attrNames naersk.lib; - in - flake-utils.lib.eachSystem supportedSystems (system: - let - lib = utils.lib.${system}; - pkgs = import nixpkgs { inherit system; }; - inherit (lib) buildRustProject testRustProject getRust; - rustNightly = getRust { date = "2021-10-13"; sha256 = "2hYUzd1vkONFeibPF2ZVOWR5LhKGecA0+Dq4/fTyNMg="; }; - crateName = "rust-multihash"; - root = ./.; - project = buildRustProject { inherit root; rust = rustNightly; }; - in - { - packages.${crateName} = project; - checks.${crateName} = testRustProject { - inherit root; - rust = rustNightly; - # Avoid unstable_options in test - cargoOptions = opt: []; - cargoBuildOptions = opt: [ "-Z unstable-options" ] ++ opt; - cargoTestOptions = opt: [ "--all-features" ] ++ opt; - - }; - - defaultPackage = self.packages.${system}.${crateName}; - - # To run with `nix run` - apps.${crateName} = flake-utils.lib.mkApp { - drv = project; - }; - - # `nix develop` - devShell = pkgs.mkShell { - inputsFrom = builtins.attrValues self.packages.${system}; - nativeBuildInputs = [ rustNightly ]; - buildInputs = with pkgs; [ - rust-analyzer - clippy - rustfmt - ]; - }; - }); -} diff --git a/third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fvm_shared-3.3.0/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/.cargo_vcs_info.json new file mode 100644 index 000000000000..a462b06c7998 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "02c5c664a7e59f6ecf84e81276c4eb8bb65693d5" + }, + "path_in_vcs": "" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.github/codecov.yml b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/.github/codecov.yml similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.github/codecov.yml rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/.github/codecov.yml diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.github/dependabot.yml b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/.github/dependabot.yml similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.github/dependabot.yml rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/.github/dependabot.yml diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.github/workflows/build.yml b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/.github/workflows/build.yml similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.github/workflows/build.yml rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/.github/workflows/build.yml diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.gitignore b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/.gitignore similarity index 62% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.gitignore rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/.gitignore index cc563fb69652..bda71a260a85 100644 --- a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.gitignore +++ b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/.gitignore @@ -1,3 +1,4 @@ target +Cargo.lock *.bk .idea diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/CHANGELOG.md b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/CHANGELOG.md new file mode 100644 index 000000000000..4628fe4313e6 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/CHANGELOG.md @@ -0,0 +1,29 @@ +# [v0.18.1](https://github.com/multiformats/rust-multihash/compare/v0.18.0...v0.18.1) (2023-04-14) + + +### Bug Fixes + +* don't panic on non minimal varints ([#293](https://github.com/multiformats/rust-multihash/issues/293)) ([c3445fc](https://github.com/multiformats/rust-multihash/commit/c3445fc5041b0fc573945321ebd4b0cdffe0daa5)), closes [#282](https://github.com/multiformats/rust-multihash/issues/282) + + +# [v0.18.0](https://github.com/multiformats/rust-multihash/compare/v0.17.0...v) (2022-12-06) + + +### Bug Fixes + +* remove Nix support ([#254](https://github.com/multiformats/rust-multihash/issues/254)) ([ebf57dd](https://github.com/multiformats/rust-multihash/commit/ebf57ddb82be2d2fd0a2f00666b0f888d4c78e1b)), closes [#247](https://github.com/multiformats/rust-multihash/issues/247) +* update to Rust edition 2021 ([#255](https://github.com/multiformats/rust-multihash/issues/255)) ([da53376](https://github.com/multiformats/rust-multihash/commit/da53376e0d9cf2d82d6c0d10590a77991cb3a6b6)) + + +### Features + +* add `encoded_len` and bytes written ([#252](https://github.com/multiformats/rust-multihash/issues/252)) ([b3cc43e](https://github.com/multiformats/rust-multihash/commit/b3cc43ecb6f9c59da774b094853d6542430d55ad)) + + +### BREAKING CHANGES + +* update to Rust edition 2021 +* `Multihash::write()` returns bytes written + + Prior to this change it returned an empty tuple `()`, now it returns +the bytes written. diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/Cargo.toml similarity index 95% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/Cargo.toml index 626bf9625276..aab0696a0fe4 100644 --- a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/Cargo.toml @@ -10,9 +10,10 @@ # See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" +rust-version = "1.59" name = "multihash" -version = "0.16.3" +version = "0.18.1" authors = [ "dignifiedquire ", "David Craven ", @@ -27,7 +28,6 @@ keywords = [ ] license = "MIT" repository = "https://github.com/multiformats/rust-multihash" -resolver = "2" [[bench]] name = "multihash" @@ -73,11 +73,12 @@ optional = true default-features = false [dependencies.quickcheck] -version = "0.9.2" +version = "1.0.3" optional = true [dependencies.rand] -version = "0.7.3" +version = "0.8.5" +features = ["small_rng"] optional = true [dependencies.ripemd-rs] @@ -132,10 +133,10 @@ version = "0.3.3" version = "0.4.2" [dev-dependencies.quickcheck] -version = "0.9.2" +version = "1.0.3" [dev-dependencies.rand] -version = "0.7.3" +version = "0.8.5" [dev-dependencies.serde_json] version = "1.0.58" diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/Cargo.toml.orig similarity index 92% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/Cargo.toml.orig index c2654694255a..d53f6185e461 100644 --- a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/Cargo.toml.orig @@ -6,13 +6,13 @@ name = "multihash" description = "Implementation of the multihash format" repository = "https://github.com/multiformats/rust-multihash" keywords = ["multihash", "ipfs"] -version = "0.16.3" +version = "0.18.1" authors = ["dignifiedquire ", "David Craven ", "Volker Mische "] license = "MIT" readme = "README.md" documentation = "https://docs.rs/multihash/" -edition = "2018" -resolver = "2" +edition = "2021" +rust-version = "1.59" [features] default = ["std", "derive", "multihash-impl", "secure-hashes"] @@ -36,8 +36,8 @@ ripemd = ["ripemd-rs"] [dependencies] parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"], optional = true } -quickcheck = { version = "0.9.2", optional = true } -rand = { version = "0.7.3", optional = true } +quickcheck = { version = "1.0.3", optional = true } +rand = { version = "0.8.5", optional = true, features = ["small_rng"] } serde = { version = "1.0.116", optional = true, default-features = false, features = ["derive"] } serde-big-array = { version = "0.3.2", optional = true, features = ["const-generics"] } multihash-derive = { version = "0.8.0", path = "derive", default-features = false, optional = true } @@ -60,8 +60,8 @@ core2 = { version = "0.4.0", default-features = false } criterion = "0.3.3" hex = "0.4.2" serde_json = "1.0.58" -quickcheck = "0.9.2" -rand = "0.7.3" +quickcheck = "1.0.3" +rand = "0.8.5" arbitrary = "1.1.0" multihash = { path = ".", features = ["sha1", "strobe"] } diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/LICENSE b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/LICENSE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/LICENSE rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/LICENSE diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/README.md b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/README.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/README.md rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/README.md diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/RELEASE.md b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/RELEASE.md new file mode 100644 index 000000000000..e5284a2b6d24 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/RELEASE.md @@ -0,0 +1,48 @@ +Release process +=============== + +Generating Changelog +-------------------- + +Install dependencies + +```sh +$ npm install -g conventional-changelog-cli +$ cd rust-multihash +$ conventional-changelog --preset angular +``` + +Add the output of that to `CHANGELOG.md`, and write a human-centric summary of changes. +Update the linked output to reference the new version, which conventional-changelog doesn't know about: + +```md +# [](https://github.com/multiformats/rust-multihash/compare/v0.17.0...v) (2022-12-06) +``` +becomes: +```md +# [v0.18.0](https://github.com/multiformats/rust-multihash/compare/v0.17.0...v0.18.0) (2022-12-06) +``` + +## Publishing + +Publishing on crates.io, bumping version & generating tags is done using [`cargo-release`](https://github.com/crate-ci/cargo-release). + +This requires the following permissions + +- on github.com/multiformats/rust-multihash + - creating tags + - pushing to `master` +- on crates.io + - publish access to all published crates + +Dry run + +```sh +$ cargo release +``` + +Actual publishing + +```sh +$ cargo release --execute +``` diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/benches/multihash.rs b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/benches/multihash.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/benches/multihash.rs rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/benches/multihash.rs diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/examples/custom_table.rs b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/examples/custom_table.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/examples/custom_table.rs rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/examples/custom_table.rs diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/examples/manual_mh.rs b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/examples/manual_mh.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/examples/manual_mh.rs rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/examples/manual_mh.rs diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/rustfmt.toml b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/rustfmt.toml similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/rustfmt.toml rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/rustfmt.toml diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/arb.rs b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/arb.rs similarity index 71% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/arb.rs rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/arb.rs index 09d7af84e61c..2768a7786e10 100644 --- a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/arb.rs +++ b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/arb.rs @@ -1,7 +1,7 @@ use quickcheck::Gen; use rand::{ distributions::{weighted::WeightedIndex, Distribution}, - Rng, + Rng, RngCore, SeedableRng, }; use arbitrary::{size_hint, Unstructured}; @@ -10,27 +10,28 @@ use crate::MultihashGeneric; /// Generates a random valid multihash. impl quickcheck::Arbitrary for MultihashGeneric { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut Gen) -> MultihashGeneric { // In real world lower multihash codes are more likely to happen, hence distribute them // with bias towards smaller values. let weights = [128, 64, 32, 16, 8, 4, 2, 1]; let dist = WeightedIndex::new(weights.iter()).unwrap(); - let code = match dist.sample(g) { - 0 => g.gen_range(0, u64::pow(2, 7)), - 1 => g.gen_range(u64::pow(2, 7), u64::pow(2, 14)), - 2 => g.gen_range(u64::pow(2, 14), u64::pow(2, 21)), - 3 => g.gen_range(u64::pow(2, 21), u64::pow(2, 28)), - 4 => g.gen_range(u64::pow(2, 28), u64::pow(2, 35)), - 5 => g.gen_range(u64::pow(2, 35), u64::pow(2, 42)), - 6 => g.gen_range(u64::pow(2, 42), u64::pow(2, 49)), - 7 => g.gen_range(u64::pow(2, 56), u64::pow(2, 63)), + let mut rng = rand::rngs::SmallRng::seed_from_u64(u64::arbitrary(g)); + let code = match dist.sample(&mut rng) { + 0 => rng.gen_range(0..u64::pow(2, 7)), + 1 => rng.gen_range(u64::pow(2, 7)..u64::pow(2, 14)), + 2 => rng.gen_range(u64::pow(2, 14)..u64::pow(2, 21)), + 3 => rng.gen_range(u64::pow(2, 21)..u64::pow(2, 28)), + 4 => rng.gen_range(u64::pow(2, 28)..u64::pow(2, 35)), + 5 => rng.gen_range(u64::pow(2, 35)..u64::pow(2, 42)), + 6 => rng.gen_range(u64::pow(2, 42)..u64::pow(2, 49)), + 7 => rng.gen_range(u64::pow(2, 56)..u64::pow(2, 63)), _ => unreachable!(), }; // Maximum size is S byte due to the generic. - let size = g.gen_range(0, S); + let size = rng.gen_range(0..S); let mut data = [0; S]; - g.fill_bytes(&mut data); + rng.fill_bytes(&mut data); MultihashGeneric::wrap(code, &data[..size]).unwrap() } } diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/error.rs b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/error.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/error.rs rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/error.rs diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/hasher.rs b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/hasher.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/hasher.rs rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/hasher.rs diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/hasher_impl.rs b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/hasher_impl.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/hasher_impl.rs rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/hasher_impl.rs diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/lib.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/lib.rs diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/multihash.rs b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/multihash.rs similarity index 90% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/multihash.rs rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/multihash.rs index f3adac138375..c078baab3440 100644 --- a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/multihash.rs +++ b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/multihash.rs @@ -159,17 +159,30 @@ impl Multihash { Ok(result) } - /// Writes a multihash to a byte stream. - pub fn write(&self, w: W) -> Result<(), Error> { + /// Writes a multihash to a byte stream, returning the written size. + pub fn write(&self, w: W) -> Result { write_multihash(w, self.code(), self.size(), self.digest()) } + /// Returns the length in bytes needed to encode this multihash into bytes. + pub fn encoded_len(&self) -> usize { + let mut code_buf = varint_encode::u64_buffer(); + let code = varint_encode::u64(self.code, &mut code_buf); + + let mut size_buf = varint_encode::u8_buffer(); + let size = varint_encode::u8(self.size, &mut size_buf); + + code.len() + size.len() + usize::from(self.size) + } + #[cfg(feature = "alloc")] /// Returns the bytes of a multihash. pub fn to_bytes(&self) -> Vec { let mut bytes = Vec::with_capacity(self.size().into()); - self.write(&mut bytes) + let written = self + .write(&mut bytes) .expect("writing to a vec should never fail"); + debug_assert_eq!(written, bytes.len()); bytes } @@ -234,7 +247,8 @@ impl Multihash { } // Don't hash the whole allocated space, but just the actual digest -#[allow(clippy::derive_hash_xor_eq)] +#[allow(unknown_lints, renamed_and_removed_lints)] +#[allow(clippy::derived_hash_with_manual_eq, clippy::derive_hash_xor_eq)] impl core::hash::Hash for Multihash { fn hash(&self, state: &mut T) { self.code.hash(state); @@ -293,7 +307,7 @@ impl parity_scale_codec::Decode for Multihash { } /// Writes the multihash to a byte stream. -pub fn write_multihash(mut w: W, code: u64, size: u8, digest: &[u8]) -> Result<(), Error> +pub fn write_multihash(mut w: W, code: u64, size: u8, digest: &[u8]) -> Result where W: io::Write, { @@ -303,10 +317,13 @@ where let mut size_buf = varint_encode::u8_buffer(); let size = varint_encode::u8(size, &mut size_buf); + let written = code.len() + size.len() + digest.len(); + w.write_all(code)?; w.write_all(size)?; w.write_all(digest)?; - Ok(()) + + Ok(written) } /// Reads a multihash from a byte stream that contains a full multihash (code, size and the digest) @@ -346,7 +363,9 @@ pub(crate) fn read_u64(mut r: R) -> Result { if n == 0 { return Err(Error::Varint(decode::Error::Insufficient)); } else if decode::is_last(b[i]) { - return Ok(decode::u64(&b[..=i]).unwrap().0); + return decode::u64(&b[..=i]) + .map(|decoded| decoded.0) + .map_err(Error::Varint); } } Err(Error::Varint(decode::Error::Overflow)) @@ -361,9 +380,10 @@ mod tests { fn roundtrip() { let hash = Code::Sha2_256.digest(b"hello world"); let mut buf = [0u8; 35]; - hash.write(&mut buf[..]).unwrap(); + let written = hash.write(&mut buf[..]).unwrap(); let hash2 = Multihash::<32>::read(&buf[..]).unwrap(); assert_eq!(hash, hash2); + assert_eq!(hash.encoded_len(), written); } #[test] @@ -435,4 +455,12 @@ mod tests { let mh2 = Multihash::<64>::default(); assert_eq!(mh1, mh2); } + + #[test] + fn decode_non_minimal_error() { + // This is a non-minimal varint. + let data = [241, 0, 0, 0, 0, 0, 128, 132, 132, 132, 58]; + let result = read_u64(&data[..]); + assert!(result.is_err()); + } } diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/multihash_impl.rs b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/multihash_impl.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/src/multihash_impl.rs rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/src/multihash_impl.rs diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/tests/lib.rs b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/tests/lib.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/tests/lib.rs rename to third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/tests/lib.rs index 14967ab35c9a..c0ebca55cca3 100644 --- a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/tests/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/multihash-0.18.1/tests/lib.rs @@ -231,7 +231,7 @@ where H: Hasher + Default, { let digest = hex::decode(digest_str).unwrap(); - let expected_bytes = hex::decode(&format!("{}{}", prefix, digest_str)).unwrap(); + let expected_bytes = hex::decode(format!("{}{}", prefix, digest_str)).unwrap(); let mut expected_cursor = Cursor::new(&expected_bytes); let multihash = code.digest(b"hello world"); diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/.cargo_vcs_info.json deleted file mode 100644 index ccd68a141774..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/.cargo_vcs_info.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "git": { - "sha1": "61a6e5294ec133448b1fb8da35e152a0cedbf870" - } -} diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/LICENSE-MIT deleted file mode 100644 index 39d4bdb5acd3..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/LICENSE-MIT +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) 2014 The Rust Project Developers - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/src/test.rs b/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/src/test.rs deleted file mode 100644 index c4cd7fe52838..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/src/test.rs +++ /dev/null @@ -1,31 +0,0 @@ -//! This module uses doc-tests on modules for `compile_fail` - -// We need "syn/full" to parse macros. -// Use `--nocapture` to check the quality of the error message. -#[cfg(not(feature = "full-syntax"))] -/// ```compile_fail -/// macro_rules! get_an_isize { -/// () => (0_isize) -/// } -/// -/// #[derive(num_derive::FromPrimitive)] -/// pub enum CLikeEnum { -/// VarA = get_an_isize!(), // error without "syn/full" -/// VarB = 2, -/// } -/// ``` -mod issue16 {} - -#[cfg(feature = "full-syntax")] -/// ``` -/// macro_rules! get_an_isize { -/// () => (0_isize) -/// } -/// -/// #[derive(num_derive::FromPrimitive)] -/// pub enum CLikeEnum { -/// VarA = get_an_isize!(), // ok with "syn/full" -/// VarB = 2, -/// } -/// ``` -mod issue16 {} diff --git a/third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/multihash-0.16.3/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/.cargo_vcs_info.json new file mode 100644 index 000000000000..a00bc5fd17cd --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "7cc33515dd2ae0eb43c5795c50ce49c554e8ba02" + }, + "path_in_vcs": "" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/.gitignore b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/.gitignore similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/.gitignore rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/.gitignore diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/Cargo.toml similarity index 65% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/Cargo.toml index 90c5d27238d5..36a8899f152c 100644 --- a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/Cargo.toml @@ -3,24 +3,30 @@ # When uploading crates to the registry Cargo will automatically # "normalize" Cargo.toml files for maximal compatibility # with all versions of Cargo and also rewrite `path` dependencies -# to registry (e.g., crates.io) dependencies +# to registry (e.g., crates.io) dependencies. # -# If you believe there's an error in this file please file an -# issue against the rust-lang/cargo repository. If you're -# editing this file be aware that the upstream Cargo.toml -# will likely look very different (and much more reasonable) +# If you are reading this file be aware that the original Cargo.toml +# will likely look very different (and much more reasonable). +# See Cargo.toml.orig for the original contents. [package] -edition = "2018" +edition = "2021" +rust-version = "1.56.0" name = "num-derive" -version = "0.3.3" +version = "0.4.2" authors = ["The Rust Project Developers"] -exclude = ["/bors.toml", "/ci/*", "/.github/*"] +exclude = [ + "/ci/*", + "/.github/*", +] description = "Numeric syntax extensions" homepage = "https://github.com/rust-num/num-derive" documentation = "https://docs.rs/num-derive" readme = "README.md" -keywords = ["mathematics", "numerics"] +keywords = [ + "mathematics", + "numerics", +] categories = ["science"] license = "MIT OR Apache-2.0" repository = "https://github.com/rust-num/num-derive" @@ -34,9 +40,18 @@ proc-macro = true name = "newtype-2015" edition = "2015" +[[test]] +name = "newtype-2018" +edition = "2018" + [[test]] name = "trivial-2015" edition = "2015" + +[[test]] +name = "trivial-2018" +edition = "2018" + [dependencies.proc-macro2] version = "1" @@ -44,12 +59,10 @@ version = "1" version = "1" [dependencies.syn] -version = "1" +version = "2.0.5" + [dev-dependencies.num] -version = "0.3" +version = "0.4" [dev-dependencies.num-traits] version = "0.2" - -[features] -full-syntax = ["syn/full"] diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/Cargo.toml.orig similarity index 72% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/Cargo.toml.orig index 5addf9010a2d..4a13a07ac4f5 100644 --- a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/Cargo.toml.orig @@ -8,35 +8,41 @@ categories = [ "science" ] license = "MIT OR Apache-2.0" name = "num-derive" repository = "https://github.com/rust-num/num-derive" -version = "0.3.3" +version = "0.4.2" readme = "README.md" -exclude = ["/bors.toml", "/ci/*", "/.github/*"] -edition = "2018" +exclude = ["/ci/*", "/.github/*"] +edition = "2021" +rust-version = "1.56.0" [dependencies] proc-macro2 = "1" quote = "1" -syn = "1" +syn = "2.0.5" [dev-dependencies] -num = "0.3" +num = "0.4" num-traits = "0.2" -[features] -full-syntax = ["syn/full"] - [lib] name = "num_derive" proc-macro = true test = false -# Most of the tests are left implicily detected, compiled for Rust 2018, -# but let's try a few of them with the old 2015 edition too. +# Most of the tests are left implicily detected, compiled for Rust 2021, +# but let's try a few of them with the older editions too. [[test]] name = "newtype-2015" edition = "2015" +[[test]] +name = "newtype-2018" +edition = "2018" + [[test]] name = "trivial-2015" edition = "2015" + +[[test]] +name = "trivial-2018" +edition = "2018" diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/LICENSE-APACHE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/LICENSE-APACHE rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/LICENSE-APACHE diff --git a/third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/LICENSE-MIT similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bitflags-1.3.2/LICENSE-MIT rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/LICENSE-MIT diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/README.md b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/README.md similarity index 92% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/README.md rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/README.md index 9826cdfc7684..20d66a63349a 100644 --- a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/README.md +++ b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/README.md @@ -2,7 +2,7 @@ [![crate](https://img.shields.io/crates/v/num-derive.svg)](https://crates.io/crates/num-derive) [![documentation](https://docs.rs/num-derive/badge.svg)](https://docs.rs/num-derive) -[![minimum rustc 1.31](https://img.shields.io/badge/rustc-1.31+-red.svg)](https://rust-lang.github.io/rfcs/2495-min-rust-version.html) +[![minimum rustc 1.56](https://img.shields.io/badge/rustc-1.56+-red.svg)](https://rust-lang.github.io/rfcs/2495-min-rust-version.html) [![build status](https://github.com/rust-num/num-derive/workflows/master/badge.svg)](https://github.com/rust-num/num-derive/actions) Procedural macros to derive numeric traits in Rust. @@ -14,7 +14,7 @@ Add this to your `Cargo.toml`: ```toml [dependencies] num-traits = "0.2" -num-derive = "0.3" +num-derive = "0.4" ``` and this to your crate root: @@ -51,7 +51,7 @@ Release notes are available in [RELEASES.md](RELEASES.md). ## Compatibility -The `num-derive` crate is tested for rustc 1.31 and greater. +The `num-derive` crate is tested for rustc 1.56 and greater. ## License diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/RELEASES.md b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/RELEASES.md similarity index 80% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/RELEASES.md rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/RELEASES.md index c3e18cca00eb..bbf6d533255d 100644 --- a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/RELEASES.md +++ b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/RELEASES.md @@ -1,3 +1,27 @@ +# Release 0.4.2 (2024-02-06) + +- [Use anon-const to avoid RFC 3373 warnings.][62] + +[62]: https://github.com/rust-num/num-derive/pull/62 + +# Release 0.4.1 (2023-10-07) + +- [Make `Float` work with `no_std`][56] -- thanks @vkahl! +- [Emit full paths for `Option` and `Result`.][57] +- [Add derive macro for `num_traits::Signed` and `Unsigned`][55] -- thanks @tdelabro! + +[55]: https://github.com/rust-num/num-derive/pull/55 +[56]: https://github.com/rust-num/num-derive/pull/56 +[57]: https://github.com/rust-num/num-derive/pull/57 + +# Release 0.4.0 (2023-06-29) + +- [Update to syn-2][54] -- thanks @maurer! + - This raises the minimum supported rustc to 1.56. + - The "full-syntax" feature has also been removed. + +[54]: https://github.com/rust-num/num-derive/pull/54 + # Release 0.3.3 (2020-10-29) - [Make `NumOps` work with `no_std`][41] -- thanks @jedrzejboczar! diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/src/lib.rs similarity index 83% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/src/lib.rs index ef55e4b0dfc6..207602b928fb 100644 --- a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/src/lib.rs @@ -71,19 +71,11 @@ use quote::quote; use syn::{Data, Fields, Ident}; /// Try to parse the tokens, or else return a compilation error -/// suggesting "full-syntax" if that's not already enabled. macro_rules! parse { ($tokens:ident as $type:ty) => { match syn::parse::<$type>($tokens) { Ok(parsed) => parsed, - Err(mut error) => { - if cfg!(not(feature = "full-syntax")) { - let hint = syn::Error::new( - Span::call_site(), - r#"this might need the "full-syntax" feature of `num-derive`"#, - ); - error.combine(hint); - } + Err(error) => { return TokenStream::from(error.to_compile_error()); } } @@ -105,16 +97,12 @@ macro_rules! parse { // we're deriving for a newtype, where the inner type is defined in the same module, but not // exported. // -// Solution: use the dummy const trick. For some reason, `extern crate` statements are allowed +// Solution: use the anonymous const trick. For some reason, `extern crate` statements are allowed // here, but everything from the surrounding module is in scope. This trick is taken from serde. -fn dummy_const_trick(trait_: &str, name: &Ident, exp: TokenStream2) -> TokenStream2 { - let dummy_const = Ident::new( - &format!("_IMPL_NUM_{}_FOR_{}", trait_, unraw(name)), - Span::call_site(), - ); +fn anon_const_trick(exp: TokenStream2) -> TokenStream2 { quote! { #[allow(non_upper_case_globals, unused_qualifications)] - const #dummy_const: () = { + const _: () = { #[allow(clippy::useless_attribute)] #[allow(rust_2018_idioms)] extern crate num_traits as _num_traits; @@ -123,10 +111,6 @@ fn dummy_const_trick(trait_: &str, name: &Ident, exp: TokenStream2) -> TokenStre } } -fn unraw(ident: &Ident) -> String { - ident.to_string().trim_start_matches("r#").to_owned() -} - // If `data` is a newtype, return the type it's wrapping. fn newtype_inner(data: &syn::Data) -> Option { match *data { @@ -170,16 +154,22 @@ impl NumTraits { // retrieve its value, and use it to create an `Ident` to be used // to import the `num_traits` crate. for attr in &ast.attrs { - if let Ok(syn::Meta::NameValue(mnv)) = attr.parse_meta() { - if mnv.path.is_ident("num_traits") { - if let syn::Lit::Str(lit_str) = mnv.lit { - return NumTraits { - import: syn::Ident::new(&lit_str.value(), lit_str.span()), - explicit: true, - }; - } else { - panic!("#[num_traits] attribute value must be a str"); - } + if attr.path().is_ident("num_traits") { + if let Ok(syn::MetaNameValue { + value: + syn::Expr::Lit(syn::ExprLit { + lit: syn::Lit::Str(ref lit_str), + .. + }), + .. + }) = attr.meta.require_name_value() + { + return NumTraits { + import: syn::Ident::new(&lit_str.value(), lit_str.span()), + explicit: true, + }; + } else { + panic!("#[num_traits] attribute value must be a str"); } } } @@ -191,11 +181,11 @@ impl NumTraits { } } - fn wrap(&self, trait_: &str, name: &Ident, output: TokenStream2) -> TokenStream2 { + fn wrap(&self, output: TokenStream2) -> TokenStream2 { if self.explicit { output } else { - dummy_const_trick(trait_, &name, output) + anon_const_trick(output) } } } @@ -259,59 +249,59 @@ pub fn from_primitive(input: TokenStream) -> TokenStream { quote! { impl #import::FromPrimitive for #name { #[inline] - fn from_i64(n: i64) -> Option { + fn from_i64(n: i64) -> ::core::option::Option { <#inner_ty as #import::FromPrimitive>::from_i64(n).map(#name) } #[inline] - fn from_u64(n: u64) -> Option { + fn from_u64(n: u64) -> ::core::option::Option { <#inner_ty as #import::FromPrimitive>::from_u64(n).map(#name) } #[inline] - fn from_isize(n: isize) -> Option { + fn from_isize(n: isize) -> ::core::option::Option { <#inner_ty as #import::FromPrimitive>::from_isize(n).map(#name) } #[inline] - fn from_i8(n: i8) -> Option { + fn from_i8(n: i8) -> ::core::option::Option { <#inner_ty as #import::FromPrimitive>::from_i8(n).map(#name) } #[inline] - fn from_i16(n: i16) -> Option { + fn from_i16(n: i16) -> ::core::option::Option { <#inner_ty as #import::FromPrimitive>::from_i16(n).map(#name) } #[inline] - fn from_i32(n: i32) -> Option { + fn from_i32(n: i32) -> ::core::option::Option { <#inner_ty as #import::FromPrimitive>::from_i32(n).map(#name) } #[inline] - fn from_i128(n: i128) -> Option { + fn from_i128(n: i128) -> ::core::option::Option { <#inner_ty as #import::FromPrimitive>::from_i128(n).map(#name) } #[inline] - fn from_usize(n: usize) -> Option { + fn from_usize(n: usize) -> ::core::option::Option { <#inner_ty as #import::FromPrimitive>::from_usize(n).map(#name) } #[inline] - fn from_u8(n: u8) -> Option { + fn from_u8(n: u8) -> ::core::option::Option { <#inner_ty as #import::FromPrimitive>::from_u8(n).map(#name) } #[inline] - fn from_u16(n: u16) -> Option { + fn from_u16(n: u16) -> ::core::option::Option { <#inner_ty as #import::FromPrimitive>::from_u16(n).map(#name) } #[inline] - fn from_u32(n: u32) -> Option { + fn from_u32(n: u32) -> ::core::option::Option { <#inner_ty as #import::FromPrimitive>::from_u32(n).map(#name) } #[inline] - fn from_u128(n: u128) -> Option { + fn from_u128(n: u128) -> ::core::option::Option { <#inner_ty as #import::FromPrimitive>::from_u128(n).map(#name) } #[inline] - fn from_f32(n: f32) -> Option { + fn from_f32(n: f32) -> ::core::option::Option { <#inner_ty as #import::FromPrimitive>::from_f32(n).map(#name) } #[inline] - fn from_f64(n: f64) -> Option { + fn from_f64(n: f64) -> ::core::option::Option { <#inner_ty as #import::FromPrimitive>::from_f64(n).map(#name) } } @@ -341,7 +331,7 @@ pub fn from_primitive(input: TokenStream) -> TokenStream { quote! { if #from_i64_var == #name::#ident as i64 { - Some(#name::#ident) + ::core::option::Option::Some(#name::#ident) } } }) @@ -357,21 +347,21 @@ pub fn from_primitive(input: TokenStream) -> TokenStream { impl #import::FromPrimitive for #name { #[allow(trivial_numeric_casts)] #[inline] - fn from_i64(#from_i64_var: i64) -> Option { + fn from_i64(#from_i64_var: i64) -> ::core::option::Option { #(#clauses else)* { - None + ::core::option::Option::None } } #[inline] - fn from_u64(n: u64) -> Option { + fn from_u64(n: u64) -> ::core::option::Option { Self::from_i64(n as i64) } } } }; - import.wrap("FromPrimitive", &name, impl_).into() + import.wrap(impl_).into() } /// Derives [`num_traits::ToPrimitive`][to] for simple enums and newtypes. @@ -433,59 +423,59 @@ pub fn to_primitive(input: TokenStream) -> TokenStream { quote! { impl #import::ToPrimitive for #name { #[inline] - fn to_i64(&self) -> Option { + fn to_i64(&self) -> ::core::option::Option { <#inner_ty as #import::ToPrimitive>::to_i64(&self.0) } #[inline] - fn to_u64(&self) -> Option { + fn to_u64(&self) -> ::core::option::Option { <#inner_ty as #import::ToPrimitive>::to_u64(&self.0) } #[inline] - fn to_isize(&self) -> Option { + fn to_isize(&self) -> ::core::option::Option { <#inner_ty as #import::ToPrimitive>::to_isize(&self.0) } #[inline] - fn to_i8(&self) -> Option { + fn to_i8(&self) -> ::core::option::Option { <#inner_ty as #import::ToPrimitive>::to_i8(&self.0) } #[inline] - fn to_i16(&self) -> Option { + fn to_i16(&self) -> ::core::option::Option { <#inner_ty as #import::ToPrimitive>::to_i16(&self.0) } #[inline] - fn to_i32(&self) -> Option { + fn to_i32(&self) -> ::core::option::Option { <#inner_ty as #import::ToPrimitive>::to_i32(&self.0) } #[inline] - fn to_i128(&self) -> Option { + fn to_i128(&self) -> ::core::option::Option { <#inner_ty as #import::ToPrimitive>::to_i128(&self.0) } #[inline] - fn to_usize(&self) -> Option { + fn to_usize(&self) -> ::core::option::Option { <#inner_ty as #import::ToPrimitive>::to_usize(&self.0) } #[inline] - fn to_u8(&self) -> Option { + fn to_u8(&self) -> ::core::option::Option { <#inner_ty as #import::ToPrimitive>::to_u8(&self.0) } #[inline] - fn to_u16(&self) -> Option { + fn to_u16(&self) -> ::core::option::Option { <#inner_ty as #import::ToPrimitive>::to_u16(&self.0) } #[inline] - fn to_u32(&self) -> Option { + fn to_u32(&self) -> ::core::option::Option { <#inner_ty as #import::ToPrimitive>::to_u32(&self.0) } #[inline] - fn to_u128(&self) -> Option { + fn to_u128(&self) -> ::core::option::Option { <#inner_ty as #import::ToPrimitive>::to_u128(&self.0) } #[inline] - fn to_f32(&self) -> Option { + fn to_f32(&self) -> ::core::option::Option { <#inner_ty as #import::ToPrimitive>::to_f32(&self.0) } #[inline] - fn to_f64(&self) -> Option { + fn to_f64(&self) -> ::core::option::Option { <#inner_ty as #import::ToPrimitive>::to_f64(&self.0) } } @@ -524,7 +514,7 @@ pub fn to_primitive(input: TokenStream) -> TokenStream { } } else { quote! { - Some(match *self { + ::core::option::Option::Some(match *self { #(#variants,)* }) } @@ -534,19 +524,19 @@ pub fn to_primitive(input: TokenStream) -> TokenStream { impl #import::ToPrimitive for #name { #[inline] #[allow(trivial_numeric_casts)] - fn to_i64(&self) -> Option { + fn to_i64(&self) -> ::core::option::Option { #match_expr } #[inline] - fn to_u64(&self) -> Option { + fn to_u64(&self) -> ::core::option::Option { self.to_i64().map(|x| x as u64) } } } }; - import.wrap("ToPrimitive", &name, impl_).into() + import.wrap(impl_).into() } const NEWTYPE_ONLY: &str = "This trait can only be derived for newtypes"; @@ -619,13 +609,13 @@ pub fn num_cast(input: TokenStream) -> TokenStream { let impl_ = quote! { impl #import::NumCast for #name { #[inline] - fn from(n: T) -> Option { + fn from(n: T) -> ::core::option::Option { <#inner_ty as #import::NumCast>::from(n).map(#name) } } }; - import.wrap("NumCast", &name, impl_).into() + import.wrap(impl_).into() } /// Derives [`num_traits::Zero`][zero] for newtypes. The inner type must already implement `Zero`. @@ -652,7 +642,7 @@ pub fn zero(input: TokenStream) -> TokenStream { } }; - import.wrap("Zero", &name, impl_).into() + import.wrap(impl_).into() } /// Derives [`num_traits::One`][one] for newtypes. The inner type must already implement `One`. @@ -679,7 +669,7 @@ pub fn one(input: TokenStream) -> TokenStream { } }; - import.wrap("One", &name, impl_).into() + import.wrap(impl_).into() } /// Derives [`num_traits::Num`][num] for newtypes. The inner type must already implement `Num`. @@ -697,13 +687,13 @@ pub fn num(input: TokenStream) -> TokenStream { impl #import::Num for #name { type FromStrRadixErr = <#inner_ty as #import::Num>::FromStrRadixErr; #[inline] - fn from_str_radix(s: &str, radix: u32) -> Result { + fn from_str_radix(s: &str, radix: u32) -> ::core::result::Result { <#inner_ty as #import::Num>::from_str_radix(s, radix).map(#name) } } }; - import.wrap("Num", &name, impl_).into() + import.wrap(impl_).into() } /// Derives [`num_traits::Float`][float] for newtypes. The inner type must already implement @@ -765,7 +755,7 @@ pub fn float(input: TokenStream) -> TokenStream { <#inner_ty as #import::Float>::is_normal(self.0) } #[inline] - fn classify(self) -> ::std::num::FpCategory { + fn classify(self) -> ::core::num::FpCategory { <#inner_ty as #import::Float>::classify(self.0) } #[inline] @@ -952,7 +942,63 @@ pub fn float(input: TokenStream) -> TokenStream { } }; - import.wrap("Float", &name, impl_).into() + import.wrap(impl_).into() } -mod test; +/// Derives [`num_traits::Signed`][signed] for newtypes. The inner type must already implement +/// `Signed`. +/// +/// [signed]: https://docs.rs/num-traits/0.2/num_traits/sign/trait.Signed.html +#[proc_macro_derive(Signed, attributes(num_traits))] +pub fn signed(input: TokenStream) -> TokenStream { + let ast = parse!(input as syn::DeriveInput); + let name = &ast.ident; + let inner_ty = newtype_inner(&ast.data).expect(NEWTYPE_ONLY); + + let import = NumTraits::new(&ast); + + let impl_ = quote! { + impl #import::Signed for #name { + #[inline] + fn abs(&self) -> Self { + #name(<#inner_ty as #import::Signed>::abs(&self.0)) + } + #[inline] + fn abs_sub(&self, other: &Self) -> Self { + #name(<#inner_ty as #import::Signed>::abs_sub(&self.0, &other.0)) + } + #[inline] + fn signum(&self) -> Self { + #name(<#inner_ty as #import::Signed>::signum(&self.0)) + } + #[inline] + fn is_positive(&self) -> bool { + <#inner_ty as #import::Signed>::is_positive(&self.0) + } + #[inline] + fn is_negative(&self) -> bool { + <#inner_ty as #import::Signed>::is_negative(&self.0) + } + } + }; + + import.wrap(impl_).into() +} + +/// Derives [`num_traits::Unsigned`][unsigned]. The inner type must already implement +/// `Unsigned`. +/// +/// [unsigned]: https://docs.rs/num/latest/num/traits/trait.Unsigned.html +#[proc_macro_derive(Unsigned, attributes(num_traits))] +pub fn unsigned(input: TokenStream) -> TokenStream { + let ast = parse!(input as syn::DeriveInput); + let name = &ast.ident; + + let import = NumTraits::new(&ast); + + let impl_ = quote! { + impl #import::Unsigned for #name {} + }; + + import.wrap(impl_).into() +} diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/empty_enum.rs b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/empty_enum.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/empty_enum.rs rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/empty_enum.rs diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/issue-16.rs b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/issue-16.rs new file mode 100644 index 000000000000..48cc2fbf8e83 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/issue-16.rs @@ -0,0 +1,11 @@ +macro_rules! get_an_isize { + () => { + 0_isize + }; +} + +#[derive(num_derive::FromPrimitive)] +pub enum CLikeEnum { + VarA = get_an_isize!(), + VarB = 2, +} diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/issue-6.rs b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/issue-6.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/issue-6.rs rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/issue-6.rs diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/issue-9.rs b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/issue-9.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/issue-9.rs rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/issue-9.rs diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/newtype-2015.rs b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/newtype-2015.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/newtype-2015.rs rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/newtype-2015.rs diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/newtype-2018.rs b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/newtype-2018.rs new file mode 100644 index 000000000000..814529ec8abb --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/newtype-2018.rs @@ -0,0 +1,2 @@ +// Same source, just compiled for 2018 edition +include!("newtype.rs"); diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/newtype.rs b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/newtype.rs similarity index 80% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/newtype.rs rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/newtype.rs index 6eafd0960b3c..71b06b3932c3 100644 --- a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/newtype.rs +++ b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/newtype.rs @@ -2,9 +2,22 @@ extern crate num as num_renamed; #[macro_use] extern crate num_derive; -use crate::num_renamed::{Float, FromPrimitive, Num, NumCast, One, ToPrimitive, Zero}; +use crate::num_renamed::{ + Float, FromPrimitive, Num, NumCast, One, Signed, ToPrimitive, Unsigned, Zero, +}; use std::ops::Neg; +#[derive(PartialEq, Zero, One, NumOps, Num, Unsigned)] +struct MyNum(u32); + +#[test] +fn test_derive_unsigned_works() { + fn do_nothing_on_unsigned(_input: impl Unsigned) {} + + let x = MyNum(42); + do_nothing_on_unsigned(x); +} + #[derive( Debug, Clone, @@ -19,6 +32,7 @@ use std::ops::Neg; Zero, Num, Float, + Signed, )] struct MyFloat(f64); @@ -87,3 +101,8 @@ fn test_num() { fn test_float() { assert_eq!(MyFloat(4.0).log(MyFloat(2.0)), MyFloat(2.0)); } + +#[test] +fn test_signed() { + assert!(MyFloat(-2.0).is_negative()) +} diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/no_implicit_prelude.rs b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/no_implicit_prelude.rs new file mode 100644 index 000000000000..cb82decb8e71 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/no_implicit_prelude.rs @@ -0,0 +1,13 @@ +#![no_implicit_prelude] + +use ::num_derive::*; + +#[derive(FromPrimitive, ToPrimitive)] +enum Color { + Red, + Blue, + Green, +} + +#[derive(FromPrimitive, ToPrimitive, NumCast, PartialEq, Zero, One, NumOps, Num)] +struct NewI32(i32); diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/num_derive_without_num.rs b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/num_derive_without_num.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/num_derive_without_num.rs rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/num_derive_without_num.rs diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/trivial-2015.rs b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/trivial-2015.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/trivial-2015.rs rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/trivial-2015.rs diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/trivial-2018.rs b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/trivial-2018.rs new file mode 100644 index 000000000000..92b971bc83c8 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/trivial-2018.rs @@ -0,0 +1,2 @@ +// Same source, just compiled for 2018 edition +include!("trivial.rs"); diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/trivial.rs b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/trivial.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/trivial.rs rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/trivial.rs diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/with_custom_values.rs b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/with_custom_values.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/with_custom_values.rs rename to third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/with_custom_values.rs index 94c84458be6b..9b202f4c5190 100644 --- a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/tests/with_custom_values.rs +++ b/third_party/rust/chromium_crates_io/vendor/num-derive-0.4.2/tests/with_custom_values.rs @@ -8,8 +8,6 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![cfg(feature = "full-syntax")] - extern crate num as num_renamed; #[macro_use] extern crate num_derive; diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/.cargo-checksum.json deleted file mode 100644 index 697c9ce2fbb4..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/.cargo-checksum.json +++ /dev/null @@ -1 +0,0 @@ -{"files":{}} diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/.cargo_vcs_info.json deleted file mode 100644 index f89353054009..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "4561d6fbafeb979a797db9d40d301a1f354dbe40" - }, - "path_in_vcs": "ripemd" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/CHANGELOG.md b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/CHANGELOG.md deleted file mode 100644 index 81cef616ca70..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/CHANGELOG.md +++ /dev/null @@ -1,30 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## 0.1.3 (2022-09-23) -### Added -- Feature-gated OID support ([#415]) - -[#415]: https://github.com/RustCrypto/hashes/pull/415 - -## 0.1.2 (2022-09-16) -### Added -- RIPEMD-128 algorithm ([#406]) - -[#406]: https://github.com/RustCrypto/hashes/pull/406 - -## 0.1.1 (2022-02-17) -### Fixed -- Minimal versions build ([#363]) - -[#363]: https://github.com/RustCrypto/hashes/pull/363 - -## 0.1.0 (2021-12-07) -- Initial release of merged `ripemd160` and `ripemd320` crates updated -to `digest` v0.10. ([#217]) - -[#217]: https://github.com/RustCrypto/hashes/pull/217 diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/Cargo.toml deleted file mode 100644 index adb4c561d1ef..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/Cargo.toml +++ /dev/null @@ -1,46 +0,0 @@ -# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO -# -# When uploading crates to the registry Cargo will automatically -# "normalize" Cargo.toml files for maximal compatibility -# with all versions of Cargo and also rewrite `path` dependencies -# to registry (e.g., crates.io) dependencies. -# -# If you are reading this file be aware that the original Cargo.toml -# will likely look very different (and much more reasonable). -# See Cargo.toml.orig for the original contents. - -[package] -edition = "2018" -name = "ripemd" -version = "0.1.3" -authors = ["RustCrypto Developers"] -description = "Pure Rust implementation of the RIPEMD hash functions" -documentation = "https://docs.rs/ripemd" -readme = "README.md" -keywords = [ - "crypto", - "ripemd", - "hash", - "digest", -] -categories = [ - "cryptography", - "no-std", -] -license = "MIT OR Apache-2.0" -repository = "https://github.com/RustCrypto/hashes" - -[dependencies.digest] -version = "0.10.4" - -[dev-dependencies.digest] -version = "0.10.4" -features = ["dev"] - -[dev-dependencies.hex-literal] -version = "0.2.2" - -[features] -default = ["std"] -oid = ["digest/oid"] -std = ["digest/std"] diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/Cargo.toml.orig deleted file mode 100644 index 3e8394d04ad5..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/Cargo.toml.orig +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "ripemd" -version = "0.1.3" -description = "Pure Rust implementation of the RIPEMD hash functions" -authors = ["RustCrypto Developers"] -license = "MIT OR Apache-2.0" -readme = "README.md" -edition = "2018" -documentation = "https://docs.rs/ripemd" -repository = "https://github.com/RustCrypto/hashes" -keywords = ["crypto", "ripemd", "hash", "digest"] -categories = ["cryptography", "no-std"] - -[dependencies] -digest = "0.10.4" - -[dev-dependencies] -digest = { version = "0.10.4", features = ["dev"] } -hex-literal = "0.2.2" - -[features] -default = ["std"] -std = ["digest/std"] -oid = ["digest/oid"] # Enable OID support. WARNING: Bumps MSRV to 1.57 diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/LICENSE-APACHE deleted file mode 100644 index 78173fa2e753..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/LICENSE-APACHE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/LICENSE-MIT deleted file mode 100644 index efb0b5f8b03a..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/LICENSE-MIT +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) 2021 RustCrypto Developers - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/README.md b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/README.md deleted file mode 100644 index c09878fe553e..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/README.md +++ /dev/null @@ -1,56 +0,0 @@ -# RustCrypto: RIPEMD - -[![crate][crate-image]][crate-link] -[![Docs][docs-image]][docs-link] -![Apache2/MIT licensed][license-image] -![Rust Version][rustc-image] -[![Project Chat][chat-image]][chat-link] -[![Build Status][build-image]][build-link] - -Pure Rust implementation of the [RIPEMD] hash functions. - -[Documentation][docs-link] - -## Minimum Supported Rust Version - -Rust **1.41** or higher. - -Minimum supported Rust version can be changed in the future, but it will be -done with a minor version bump. - -## SemVer Policy - -- All on-by-default features of this library are covered by SemVer -- MSRV is considered exempt from SemVer as noted above - -## License - -Licensed under either of: - - * [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) - * [MIT license](http://opensource.org/licenses/MIT) - -at your option. - -### Contribution - -Unless you explicitly state otherwise, any contribution intentionally submitted -for inclusion in the work by you, as defined in the Apache-2.0 license, shall be -dual licensed as above, without any additional terms or conditions. - -[//]: # (badges) - -[crate-image]: https://img.shields.io/crates/v/ripemd.svg -[crate-link]: https://crates.io/crates/ripemd -[docs-image]: https://docs.rs/ripemd/badge.svg -[docs-link]: https://docs.rs/ripemd/ -[license-image]: https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg -[rustc-image]: https://img.shields.io/badge/rustc-1.41+-blue.svg -[chat-image]: https://img.shields.io/badge/zulip-join_chat-blue.svg -[chat-link]: https://rustcrypto.zulipchat.com/#narrow/stream/260041-hashes -[build-image]: https://github.com/RustCrypto/hashes/workflows/ripemd/badge.svg?branch=master -[build-link]: https://github.com/RustCrypto/hashes/actions?query=workflow%3Aripemd160 - -[//]: # (general links) - -[RIPEMD]: https://en.wikipedia.org/wiki/RIPEMD diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/benches/mod.rs b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/benches/mod.rs deleted file mode 100644 index 6f8e0842f1c4..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/benches/mod.rs +++ /dev/null @@ -1,38 +0,0 @@ -#![feature(test)] -extern crate test; - -use digest::bench_update; -use ripemd::{Ripemd128, Ripemd160, Ripemd256, Ripemd320}; -use test::Bencher; - -bench_update!( - Ripemd128::default(); - ripemd128_10 10; - ripemd128_100 100; - ripemd128_1000 1000; - ripemd128_10000 10000; -); - -bench_update!( - Ripemd160::default(); - ripemd160_10 10; - ripemd160_100 100; - ripemd160_1000 1000; - ripemd160_10000 10000; -); - -bench_update!( - Ripemd256::default(); - ripemd256_10 10; - ripemd256_100 100; - ripemd256_1000 1000; - ripemd256_10000 10000; -); - -bench_update!( - Ripemd320::default(); - ripemd320_10 10; - ripemd320_100 100; - ripemd320_1000 1000; - ripemd320_10000 10000; -); diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c128.rs b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c128.rs deleted file mode 100644 index b531e1b052c2..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c128.rs +++ /dev/null @@ -1,242 +0,0 @@ -use core::convert::TryInto; - -pub const DIGEST_BUF_LEN: usize = 4; -pub const WORK_BUF_LEN: usize = 16; - -pub const H0: [u32; DIGEST_BUF_LEN] = [0x6745_2301, 0xefcd_ab89, 0x98ba_dcfe, 0x1032_5476]; - -macro_rules! round( - ($a:expr, $b:expr, $c:expr, $d:expr, - $x:expr, $bits:expr, $add:expr, $round:expr) => ({ - $a = $a.wrapping_add($round).wrapping_add($x).wrapping_add($add); - $a = $a.rotate_left($bits); - }); -); - -macro_rules! process_block( - ($h:ident, $data:expr, - $( round1: h_ordering $f0:expr, $f1:expr, $f2:expr, $f3:expr; - data_index $data_index1:expr; roll_shift $bits1:expr )*; - $( round2: h_ordering $g0:expr, $g1:expr, $g2:expr, $g3:expr; - data_index $data_index2:expr; roll_shift $bits2:expr )*; - $( round3: h_ordering $h0:expr, $h1:expr, $h2:expr, $h3:expr; - data_index $data_index3:expr; roll_shift $bits3:expr )*; - $( round4: h_ordering $i0:expr, $i1:expr, $i2:expr, $i3:expr; - data_index $data_index4:expr; roll_shift $bits4:expr )*; - $( par_round1: h_ordering $pi0:expr, $pi1:expr, $pi2:expr, $pi3:expr; - data_index $pdata_index1:expr; roll_shift $pbits1:expr )*; - $( par_round2: h_ordering $ph0:expr, $ph1:expr, $ph2:expr, $ph3:expr; - data_index $pdata_index2:expr; roll_shift $pbits2:expr )*; - $( par_round3: h_ordering $pg0:expr, $pg1:expr, $pg2:expr, $pg3:expr; - data_index $pdata_index3:expr; roll_shift $pbits3:expr )*; - $( par_round4: h_ordering $pf0:expr, $pf1:expr, $pf2:expr, $pf3:expr; - data_index $pdata_index4:expr; roll_shift $pbits4:expr )*; - ) => ({ - let mut bb = *$h; - let mut bbb = *$h; - - // Round 1 - $( round!(bb[$f0], bb[$f1], bb[$f2], bb[$f3], - $data[$data_index1], $bits1, 0x0000_0000, - bb[$f1] ^ bb[$f2] ^ bb[$f3]); )* - - // Round 2 - $( round!(bb[$g0], bb[$g1], bb[$g2], bb[$g3], - $data[$data_index2], $bits2, 0x5a82_7999, - (bb[$g1] & bb[$g2]) | (!bb[$g1] & bb[$g3])); )* - - // Round 3 - $( round!(bb[$h0], bb[$h1], bb[$h2], bb[$h3], - $data[$data_index3], $bits3, 0x6ed9_eba1, - (bb[$h1] | !bb[$h2]) ^ bb[$h3]); )* - - // Round 4 - $( round!(bb[$i0], bb[$i1], bb[$i2], bb[$i3], - $data[$data_index4], $bits4, 0x8f1b_bcdc, - (bb[$i1] & bb[$i3]) | (bb[$i2] & !bb[$i3])); )* - - // Parallel rounds: these are the same as the previous five - // rounds except that the constants have changed, we work - // with the other buffer, and they are applied in reverse - // order. - - // Parallel Round 1 - $( round!(bbb[$pi0], bbb[$pi1], bbb[$pi2], bbb[$pi3], - $data[$pdata_index1], $pbits1, 0x50a2_8be6, - (bbb[$pi1] & bbb[$pi3]) | (bbb[$pi2] & !bbb[$pi3])); )* - - // Parallel Round 2 - $( round!(bbb[$ph0], bbb[$ph1], bbb[$ph2], bbb[$ph3], - $data[$pdata_index2], $pbits2, 0x5c4d_d124, - (bbb[$ph1] | !bbb[$ph2]) ^ bbb[$ph3]); )* - - // Parallel Round 3 - $( round!(bbb[$pg0], bbb[$pg1], bbb[$pg2], bbb[$pg3], - $data[$pdata_index3], $pbits3, 0x6d70_3ef3, - (bbb[$pg1] & bbb[$pg2]) | (!bbb[$pg1] & bbb[$pg3])); )* - - // Parallel Round 4 - $( round!(bbb[$pf0], bbb[$pf1], bbb[$pf2], bbb[$pf3], - $data[$pdata_index4], $pbits4, 0x0000_0000, - bbb[$pf1] ^ bbb[$pf2] ^ bbb[$pf3]); )* - - // Combine results - bbb[3] = bbb[3].wrapping_add($h[1]).wrapping_add(bb[2]); - $h[1] = $h[2].wrapping_add(bb[3]).wrapping_add(bbb[0]); - $h[2] = $h[3].wrapping_add(bb[0]).wrapping_add(bbb[1]); - $h[3] = $h[0].wrapping_add(bb[1]).wrapping_add(bbb[2]); - $h[0] = bbb[3]; - }); -); - -pub fn compress(h: &mut [u32; DIGEST_BUF_LEN], data: &[u8; 64]) { - let mut w = [0u32; WORK_BUF_LEN]; - for (o, chunk) in w.iter_mut().zip(data.chunks_exact(4)) { - *o = u32::from_le_bytes(chunk.try_into().unwrap()); - } - process_block!(h, w[..], - // Round 1 - round1: h_ordering 0, 1, 2, 3; data_index 0; roll_shift 11 - round1: h_ordering 3, 0, 1, 2; data_index 1; roll_shift 14 - round1: h_ordering 2, 3, 0, 1; data_index 2; roll_shift 15 - round1: h_ordering 1, 2, 3, 0; data_index 3; roll_shift 12 - round1: h_ordering 0, 1, 2, 3; data_index 4; roll_shift 5 - round1: h_ordering 3, 0, 1, 2; data_index 5; roll_shift 8 - round1: h_ordering 2, 3, 0, 1; data_index 6; roll_shift 7 - round1: h_ordering 1, 2, 3, 0; data_index 7; roll_shift 9 - round1: h_ordering 0, 1, 2, 3; data_index 8; roll_shift 11 - round1: h_ordering 3, 0, 1, 2; data_index 9; roll_shift 13 - round1: h_ordering 2, 3, 0, 1; data_index 10; roll_shift 14 - round1: h_ordering 1, 2, 3, 0; data_index 11; roll_shift 15 - round1: h_ordering 0, 1, 2, 3; data_index 12; roll_shift 6 - round1: h_ordering 3, 0, 1, 2; data_index 13; roll_shift 7 - round1: h_ordering 2, 3, 0, 1; data_index 14; roll_shift 9 - round1: h_ordering 1, 2, 3, 0; data_index 15; roll_shift 8; - - // Round 2 - round2: h_ordering 0, 1, 2, 3; data_index 7; roll_shift 7 - round2: h_ordering 3, 0, 1, 2; data_index 4; roll_shift 6 - round2: h_ordering 2, 3, 0, 1; data_index 13; roll_shift 8 - round2: h_ordering 1, 2, 3, 0; data_index 1; roll_shift 13 - round2: h_ordering 0, 1, 2, 3; data_index 10; roll_shift 11 - round2: h_ordering 3, 0, 1, 2; data_index 6; roll_shift 9 - round2: h_ordering 2, 3, 0, 1; data_index 15; roll_shift 7 - round2: h_ordering 1, 2, 3, 0; data_index 3; roll_shift 15 - round2: h_ordering 0, 1, 2, 3; data_index 12; roll_shift 7 - round2: h_ordering 3, 0, 1, 2; data_index 0; roll_shift 12 - round2: h_ordering 2, 3, 0, 1; data_index 9; roll_shift 15 - round2: h_ordering 1, 2, 3, 0; data_index 5; roll_shift 9 - round2: h_ordering 0, 1, 2, 3; data_index 2; roll_shift 11 - round2: h_ordering 3, 0, 1, 2; data_index 14; roll_shift 7 - round2: h_ordering 2, 3, 0, 1; data_index 11; roll_shift 13 - round2: h_ordering 1, 2, 3, 0; data_index 8; roll_shift 12; - - // Round 3 - round3: h_ordering 0, 1, 2, 3; data_index 3; roll_shift 11 - round3: h_ordering 3, 0, 1, 2; data_index 10; roll_shift 13 - round3: h_ordering 2, 3, 0, 1; data_index 14; roll_shift 6 - round3: h_ordering 1, 2, 3, 0; data_index 4; roll_shift 7 - round3: h_ordering 0, 1, 2, 3; data_index 9; roll_shift 14 - round3: h_ordering 3, 0, 1, 2; data_index 15; roll_shift 9 - round3: h_ordering 2, 3, 0, 1; data_index 8; roll_shift 13 - round3: h_ordering 1, 2, 3, 0; data_index 1; roll_shift 15 - round3: h_ordering 0, 1, 2, 3; data_index 2; roll_shift 14 - round3: h_ordering 3, 0, 1, 2; data_index 7; roll_shift 8 - round3: h_ordering 2, 3, 0, 1; data_index 0; roll_shift 13 - round3: h_ordering 1, 2, 3, 0; data_index 6; roll_shift 6 - round3: h_ordering 0, 1, 2, 3; data_index 13; roll_shift 5 - round3: h_ordering 3, 0, 1, 2; data_index 11; roll_shift 12 - round3: h_ordering 2, 3, 0, 1; data_index 5; roll_shift 7 - round3: h_ordering 1, 2, 3, 0; data_index 12; roll_shift 5; - - // Round 4 - round4: h_ordering 0, 1, 2, 3; data_index 1; roll_shift 11 - round4: h_ordering 3, 0, 1, 2; data_index 9; roll_shift 12 - round4: h_ordering 2, 3, 0, 1; data_index 11; roll_shift 14 - round4: h_ordering 1, 2, 3, 0; data_index 10; roll_shift 15 - round4: h_ordering 0, 1, 2, 3; data_index 0; roll_shift 14 - round4: h_ordering 3, 0, 1, 2; data_index 8; roll_shift 15 - round4: h_ordering 2, 3, 0, 1; data_index 12; roll_shift 9 - round4: h_ordering 1, 2, 3, 0; data_index 4; roll_shift 8 - round4: h_ordering 0, 1, 2, 3; data_index 13; roll_shift 9 - round4: h_ordering 3, 0, 1, 2; data_index 3; roll_shift 14 - round4: h_ordering 2, 3, 0, 1; data_index 7; roll_shift 5 - round4: h_ordering 1, 2, 3, 0; data_index 15; roll_shift 6 - round4: h_ordering 0, 1, 2, 3; data_index 14; roll_shift 8 - round4: h_ordering 3, 0, 1, 2; data_index 5; roll_shift 6 - round4: h_ordering 2, 3, 0, 1; data_index 6; roll_shift 5 - round4: h_ordering 1, 2, 3, 0; data_index 2; roll_shift 12; - - // Parallel Round 1 - par_round1: h_ordering 0, 1, 2, 3; data_index 5; roll_shift 8 - par_round1: h_ordering 3, 0, 1, 2; data_index 14; roll_shift 9 - par_round1: h_ordering 2, 3, 0, 1; data_index 7; roll_shift 9 - par_round1: h_ordering 1, 2, 3, 0; data_index 0; roll_shift 11 - par_round1: h_ordering 0, 1, 2, 3; data_index 9; roll_shift 13 - par_round1: h_ordering 3, 0, 1, 2; data_index 2; roll_shift 15 - par_round1: h_ordering 2, 3, 0, 1; data_index 11; roll_shift 15 - par_round1: h_ordering 1, 2, 3, 0; data_index 4; roll_shift 5 - par_round1: h_ordering 0, 1, 2, 3; data_index 13; roll_shift 7 - par_round1: h_ordering 3, 0, 1, 2; data_index 6; roll_shift 7 - par_round1: h_ordering 2, 3, 0, 1; data_index 15; roll_shift 8 - par_round1: h_ordering 1, 2, 3, 0; data_index 8; roll_shift 11 - par_round1: h_ordering 0, 1, 2, 3; data_index 1; roll_shift 14 - par_round1: h_ordering 3, 0, 1, 2; data_index 10; roll_shift 14 - par_round1: h_ordering 2, 3, 0, 1; data_index 3; roll_shift 12 - par_round1: h_ordering 1, 2, 3, 0; data_index 12; roll_shift 6; - - // Parallel Round 2 - par_round2: h_ordering 0, 1, 2, 3; data_index 6; roll_shift 9 - par_round2: h_ordering 3, 0, 1, 2; data_index 11; roll_shift 13 - par_round2: h_ordering 2, 3, 0, 1; data_index 3; roll_shift 15 - par_round2: h_ordering 1, 2, 3, 0; data_index 7; roll_shift 7 - par_round2: h_ordering 0, 1, 2, 3; data_index 0; roll_shift 12 - par_round2: h_ordering 3, 0, 1, 2; data_index 13; roll_shift 8 - par_round2: h_ordering 2, 3, 0, 1; data_index 5; roll_shift 9 - par_round2: h_ordering 1, 2, 3, 0; data_index 10; roll_shift 11 - par_round2: h_ordering 0, 1, 2, 3; data_index 14; roll_shift 7 - par_round2: h_ordering 3, 0, 1, 2; data_index 15; roll_shift 7 - par_round2: h_ordering 2, 3, 0, 1; data_index 8; roll_shift 12 - par_round2: h_ordering 1, 2, 3, 0; data_index 12; roll_shift 7 - par_round2: h_ordering 0, 1, 2, 3; data_index 4; roll_shift 6 - par_round2: h_ordering 3, 0, 1, 2; data_index 9; roll_shift 15 - par_round2: h_ordering 2, 3, 0, 1; data_index 1; roll_shift 13 - par_round2: h_ordering 1, 2, 3, 0; data_index 2; roll_shift 11; - - // Parallel Round 3 - par_round3: h_ordering 0, 1, 2, 3; data_index 15; roll_shift 9 - par_round3: h_ordering 3, 0, 1, 2; data_index 5; roll_shift 7 - par_round3: h_ordering 2, 3, 0, 1; data_index 1; roll_shift 15 - par_round3: h_ordering 1, 2, 3, 0; data_index 3; roll_shift 11 - par_round3: h_ordering 0, 1, 2, 3; data_index 7; roll_shift 8 - par_round3: h_ordering 3, 0, 1, 2; data_index 14; roll_shift 6 - par_round3: h_ordering 2, 3, 0, 1; data_index 6; roll_shift 6 - par_round3: h_ordering 1, 2, 3, 0; data_index 9; roll_shift 14 - par_round3: h_ordering 0, 1, 2, 3; data_index 11; roll_shift 12 - par_round3: h_ordering 3, 0, 1, 2; data_index 8; roll_shift 13 - par_round3: h_ordering 2, 3, 0, 1; data_index 12; roll_shift 5 - par_round3: h_ordering 1, 2, 3, 0; data_index 2; roll_shift 14 - par_round3: h_ordering 0, 1, 2, 3; data_index 10; roll_shift 13 - par_round3: h_ordering 3, 0, 1, 2; data_index 0; roll_shift 13 - par_round3: h_ordering 2, 3, 0, 1; data_index 4; roll_shift 7 - par_round3: h_ordering 1, 2, 3, 0; data_index 13; roll_shift 5; - - // Parallel Round 4 - par_round4: h_ordering 0, 1, 2, 3; data_index 8; roll_shift 15 - par_round4: h_ordering 3, 0, 1, 2; data_index 6; roll_shift 5 - par_round4: h_ordering 2, 3, 0, 1; data_index 4; roll_shift 8 - par_round4: h_ordering 1, 2, 3, 0; data_index 1; roll_shift 11 - par_round4: h_ordering 0, 1, 2, 3; data_index 3; roll_shift 14 - par_round4: h_ordering 3, 0, 1, 2; data_index 11; roll_shift 14 - par_round4: h_ordering 2, 3, 0, 1; data_index 15; roll_shift 6 - par_round4: h_ordering 1, 2, 3, 0; data_index 0; roll_shift 14 - par_round4: h_ordering 0, 1, 2, 3; data_index 5; roll_shift 6 - par_round4: h_ordering 3, 0, 1, 2; data_index 12; roll_shift 9 - par_round4: h_ordering 2, 3, 0, 1; data_index 2; roll_shift 12 - par_round4: h_ordering 1, 2, 3, 0; data_index 13; roll_shift 9 - par_round4: h_ordering 0, 1, 2, 3; data_index 9; roll_shift 12 - par_round4: h_ordering 3, 0, 1, 2; data_index 7; roll_shift 5 - par_round4: h_ordering 2, 3, 0, 1; data_index 10; roll_shift 15 - par_round4: h_ordering 1, 2, 3, 0; data_index 14; roll_shift 8; - ); -} diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c160.rs b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c160.rs deleted file mode 100644 index db2e3fb1907a..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c160.rs +++ /dev/null @@ -1,300 +0,0 @@ -use core::convert::TryInto; - -pub const DIGEST_BUF_LEN: usize = 5; -pub const WORK_BUF_LEN: usize = 16; - -pub const H0: [u32; DIGEST_BUF_LEN] = [ - 0x6745_2301, - 0xefcd_ab89, - 0x98ba_dcfe, - 0x1032_5476, - 0xc3d2_e1f0, -]; - -macro_rules! round( - ($a:expr, $b:expr, $c:expr, $d:expr, $e:expr, - $x:expr, $bits:expr, $add:expr, $round:expr) => ({ - $a = $a.wrapping_add($round).wrapping_add($x).wrapping_add($add); - $a = $a.rotate_left($bits).wrapping_add($e); - $c = $c.rotate_left(10); - }); -); - -macro_rules! process_block( - ($h:ident, $data:expr, - $( round1: h_ordering $f0:expr, $f1:expr, $f2:expr, $f3:expr, $f4:expr; - data_index $data_index1:expr; roll_shift $bits1:expr )*; - $( round2: h_ordering $g0:expr, $g1:expr, $g2:expr, $g3:expr, $g4:expr; - data_index $data_index2:expr; roll_shift $bits2:expr )*; - $( round3: h_ordering $h0:expr, $h1:expr, $h2:expr, $h3:expr, $h4:expr; - data_index $data_index3:expr; roll_shift $bits3:expr )*; - $( round4: h_ordering $i0:expr, $i1:expr, $i2:expr, $i3:expr, $i4:expr; - data_index $data_index4:expr; roll_shift $bits4:expr )*; - $( round5: h_ordering $j0:expr, $j1:expr, $j2:expr, $j3:expr, $j4:expr; - data_index $data_index5:expr; roll_shift $bits5:expr )*; - $( par_round1: h_ordering $pj0:expr, $pj1:expr, $pj2:expr, $pj3:expr, $pj4:expr; - data_index $pdata_index1:expr; roll_shift $pbits1:expr )*; - $( par_round2: h_ordering $pi0:expr, $pi1:expr, $pi2:expr, $pi3:expr, $pi4:expr; - data_index $pdata_index2:expr; roll_shift $pbits2:expr )*; - $( par_round3: h_ordering $ph0:expr, $ph1:expr, $ph2:expr, $ph3:expr, $ph4:expr; - data_index $pdata_index3:expr; roll_shift $pbits3:expr )*; - $( par_round4: h_ordering $pg0:expr, $pg1:expr, $pg2:expr, $pg3:expr, $pg4:expr; - data_index $pdata_index4:expr; roll_shift $pbits4:expr )*; - $( par_round5: h_ordering $pf0:expr, $pf1:expr, $pf2:expr, $pf3:expr, $pf4:expr; - data_index $pdata_index5:expr; roll_shift $pbits5:expr )*; - ) => ({ - let mut bb = *$h; - let mut bbb = *$h; - - // Round 1 - $( round!(bb[$f0], bb[$f1], bb[$f2], bb[$f3], bb[$f4], - $data[$data_index1], $bits1, 0x0000_0000, - bb[$f1] ^ bb[$f2] ^ bb[$f3]); )* - - // Round 2 - $( round!(bb[$g0], bb[$g1], bb[$g2], bb[$g3], bb[$g4], - $data[$data_index2], $bits2, 0x5a82_7999, - (bb[$g1] & bb[$g2]) | (!bb[$g1] & bb[$g3])); )* - - // Round 3 - $( round!(bb[$h0], bb[$h1], bb[$h2], bb[$h3], bb[$h4], - $data[$data_index3], $bits3, 0x6ed9_eba1, - (bb[$h1] | !bb[$h2]) ^ bb[$h3]); )* - - // Round 4 - $( round!(bb[$i0], bb[$i1], bb[$i2], bb[$i3], bb[$i4], - $data[$data_index4], $bits4, 0x8f1b_bcdc, - (bb[$i1] & bb[$i3]) | (bb[$i2] & !bb[$i3])); )* - - // Round 5 - $( round!(bb[$j0], bb[$j1], bb[$j2], bb[$j3], bb[$j4], - $data[$data_index5], $bits5, 0xa953_fd4e, - bb[$j1] ^ (bb[$j2] | !bb[$j3])); )* - - // Parallel rounds: these are the same as the previous five - // rounds except that the constants have changed, we work - // with the other buffer, and they are applied in reverse - // order. - - // Parallel Round 1 - $( round!(bbb[$pj0], bbb[$pj1], bbb[$pj2], bbb[$pj3], bbb[$pj4], - $data[$pdata_index1], $pbits1, 0x50a2_8be6, - bbb[$pj1] ^ (bbb[$pj2] | !bbb[$pj3])); )* - - // Parallel Round 2 - $( round!(bbb[$pi0], bbb[$pi1], bbb[$pi2], bbb[$pi3], bbb[$pi4], - $data[$pdata_index2], $pbits2, 0x5c4d_d124, - (bbb[$pi1] & bbb[$pi3]) | (bbb[$pi2] & !bbb[$pi3])); )* - - // Parallel Round 3 - $( round!(bbb[$ph0], bbb[$ph1], bbb[$ph2], bbb[$ph3], bbb[$ph4], - $data[$pdata_index3], $pbits3, 0x6d70_3ef3, - (bbb[$ph1] | !bbb[$ph2]) ^ bbb[$ph3]); )* - - // Parallel Round 4 - $( round!(bbb[$pg0], bbb[$pg1], bbb[$pg2], bbb[$pg3], bbb[$pg4], - $data[$pdata_index4], $pbits4, 0x7a6d_76e9, - (bbb[$pg1] & bbb[$pg2]) | (!bbb[$pg1] & bbb[$pg3])); )* - - // Parallel Round 5 - $( round!(bbb[$pf0], bbb[$pf1], bbb[$pf2], bbb[$pf3], bbb[$pf4], - $data[$pdata_index5], $pbits5, 0x0000_0000, - bbb[$pf1] ^ bbb[$pf2] ^ bbb[$pf3]); )* - - // Combine results - bbb[3] = bbb[3].wrapping_add($h[1]).wrapping_add(bb[2]); - $h[1] = $h[2].wrapping_add(bb[3]).wrapping_add(bbb[4]); - $h[2] = $h[3].wrapping_add(bb[4]).wrapping_add(bbb[0]); - $h[3] = $h[4].wrapping_add(bb[0]).wrapping_add(bbb[1]); - $h[4] = $h[0].wrapping_add(bb[1]).wrapping_add(bbb[2]); - $h[0] = bbb[3]; - }); -); - -pub fn compress(h: &mut [u32; DIGEST_BUF_LEN], data: &[u8; 64]) { - let mut w = [0u32; WORK_BUF_LEN]; - for (o, chunk) in w.iter_mut().zip(data.chunks_exact(4)) { - *o = u32::from_le_bytes(chunk.try_into().unwrap()); - } - process_block!(h, w[..], - // Round 1 - round1: h_ordering 0, 1, 2, 3, 4; data_index 0; roll_shift 11 - round1: h_ordering 4, 0, 1, 2, 3; data_index 1; roll_shift 14 - round1: h_ordering 3, 4, 0, 1, 2; data_index 2; roll_shift 15 - round1: h_ordering 2, 3, 4, 0, 1; data_index 3; roll_shift 12 - round1: h_ordering 1, 2, 3, 4, 0; data_index 4; roll_shift 5 - round1: h_ordering 0, 1, 2, 3, 4; data_index 5; roll_shift 8 - round1: h_ordering 4, 0, 1, 2, 3; data_index 6; roll_shift 7 - round1: h_ordering 3, 4, 0, 1, 2; data_index 7; roll_shift 9 - round1: h_ordering 2, 3, 4, 0, 1; data_index 8; roll_shift 11 - round1: h_ordering 1, 2, 3, 4, 0; data_index 9; roll_shift 13 - round1: h_ordering 0, 1, 2, 3, 4; data_index 10; roll_shift 14 - round1: h_ordering 4, 0, 1, 2, 3; data_index 11; roll_shift 15 - round1: h_ordering 3, 4, 0, 1, 2; data_index 12; roll_shift 6 - round1: h_ordering 2, 3, 4, 0, 1; data_index 13; roll_shift 7 - round1: h_ordering 1, 2, 3, 4, 0; data_index 14; roll_shift 9 - round1: h_ordering 0, 1, 2, 3, 4; data_index 15; roll_shift 8; - - // Round 2 - round2: h_ordering 4, 0, 1, 2, 3; data_index 7; roll_shift 7 - round2: h_ordering 3, 4, 0, 1, 2; data_index 4; roll_shift 6 - round2: h_ordering 2, 3, 4, 0, 1; data_index 13; roll_shift 8 - round2: h_ordering 1, 2, 3, 4, 0; data_index 1; roll_shift 13 - round2: h_ordering 0, 1, 2, 3, 4; data_index 10; roll_shift 11 - round2: h_ordering 4, 0, 1, 2, 3; data_index 6; roll_shift 9 - round2: h_ordering 3, 4, 0, 1, 2; data_index 15; roll_shift 7 - round2: h_ordering 2, 3, 4, 0, 1; data_index 3; roll_shift 15 - round2: h_ordering 1, 2, 3, 4, 0; data_index 12; roll_shift 7 - round2: h_ordering 0, 1, 2, 3, 4; data_index 0; roll_shift 12 - round2: h_ordering 4, 0, 1, 2, 3; data_index 9; roll_shift 15 - round2: h_ordering 3, 4, 0, 1, 2; data_index 5; roll_shift 9 - round2: h_ordering 2, 3, 4, 0, 1; data_index 2; roll_shift 11 - round2: h_ordering 1, 2, 3, 4, 0; data_index 14; roll_shift 7 - round2: h_ordering 0, 1, 2, 3, 4; data_index 11; roll_shift 13 - round2: h_ordering 4, 0, 1, 2, 3; data_index 8; roll_shift 12; - - // Round 3 - round3: h_ordering 3, 4, 0, 1, 2; data_index 3; roll_shift 11 - round3: h_ordering 2, 3, 4, 0, 1; data_index 10; roll_shift 13 - round3: h_ordering 1, 2, 3, 4, 0; data_index 14; roll_shift 6 - round3: h_ordering 0, 1, 2, 3, 4; data_index 4; roll_shift 7 - round3: h_ordering 4, 0, 1, 2, 3; data_index 9; roll_shift 14 - round3: h_ordering 3, 4, 0, 1, 2; data_index 15; roll_shift 9 - round3: h_ordering 2, 3, 4, 0, 1; data_index 8; roll_shift 13 - round3: h_ordering 1, 2, 3, 4, 0; data_index 1; roll_shift 15 - round3: h_ordering 0, 1, 2, 3, 4; data_index 2; roll_shift 14 - round3: h_ordering 4, 0, 1, 2, 3; data_index 7; roll_shift 8 - round3: h_ordering 3, 4, 0, 1, 2; data_index 0; roll_shift 13 - round3: h_ordering 2, 3, 4, 0, 1; data_index 6; roll_shift 6 - round3: h_ordering 1, 2, 3, 4, 0; data_index 13; roll_shift 5 - round3: h_ordering 0, 1, 2, 3, 4; data_index 11; roll_shift 12 - round3: h_ordering 4, 0, 1, 2, 3; data_index 5; roll_shift 7 - round3: h_ordering 3, 4, 0, 1, 2; data_index 12; roll_shift 5; - - // Round 4 - round4: h_ordering 2, 3, 4, 0, 1; data_index 1; roll_shift 11 - round4: h_ordering 1, 2, 3, 4, 0; data_index 9; roll_shift 12 - round4: h_ordering 0, 1, 2, 3, 4; data_index 11; roll_shift 14 - round4: h_ordering 4, 0, 1, 2, 3; data_index 10; roll_shift 15 - round4: h_ordering 3, 4, 0, 1, 2; data_index 0; roll_shift 14 - round4: h_ordering 2, 3, 4, 0, 1; data_index 8; roll_shift 15 - round4: h_ordering 1, 2, 3, 4, 0; data_index 12; roll_shift 9 - round4: h_ordering 0, 1, 2, 3, 4; data_index 4; roll_shift 8 - round4: h_ordering 4, 0, 1, 2, 3; data_index 13; roll_shift 9 - round4: h_ordering 3, 4, 0, 1, 2; data_index 3; roll_shift 14 - round4: h_ordering 2, 3, 4, 0, 1; data_index 7; roll_shift 5 - round4: h_ordering 1, 2, 3, 4, 0; data_index 15; roll_shift 6 - round4: h_ordering 0, 1, 2, 3, 4; data_index 14; roll_shift 8 - round4: h_ordering 4, 0, 1, 2, 3; data_index 5; roll_shift 6 - round4: h_ordering 3, 4, 0, 1, 2; data_index 6; roll_shift 5 - round4: h_ordering 2, 3, 4, 0, 1; data_index 2; roll_shift 12; - - // Round 5 - round5: h_ordering 1, 2, 3, 4, 0; data_index 4; roll_shift 9 - round5: h_ordering 0, 1, 2, 3, 4; data_index 0; roll_shift 15 - round5: h_ordering 4, 0, 1, 2, 3; data_index 5; roll_shift 5 - round5: h_ordering 3, 4, 0, 1, 2; data_index 9; roll_shift 11 - round5: h_ordering 2, 3, 4, 0, 1; data_index 7; roll_shift 6 - round5: h_ordering 1, 2, 3, 4, 0; data_index 12; roll_shift 8 - round5: h_ordering 0, 1, 2, 3, 4; data_index 2; roll_shift 13 - round5: h_ordering 4, 0, 1, 2, 3; data_index 10; roll_shift 12 - round5: h_ordering 3, 4, 0, 1, 2; data_index 14; roll_shift 5 - round5: h_ordering 2, 3, 4, 0, 1; data_index 1; roll_shift 12 - round5: h_ordering 1, 2, 3, 4, 0; data_index 3; roll_shift 13 - round5: h_ordering 0, 1, 2, 3, 4; data_index 8; roll_shift 14 - round5: h_ordering 4, 0, 1, 2, 3; data_index 11; roll_shift 11 - round5: h_ordering 3, 4, 0, 1, 2; data_index 6; roll_shift 8 - round5: h_ordering 2, 3, 4, 0, 1; data_index 15; roll_shift 5 - round5: h_ordering 1, 2, 3, 4, 0; data_index 13; roll_shift 6; - - // Parallel Round 1 - par_round1: h_ordering 0, 1, 2, 3, 4; data_index 5; roll_shift 8 - par_round1: h_ordering 4, 0, 1, 2, 3; data_index 14; roll_shift 9 - par_round1: h_ordering 3, 4, 0, 1, 2; data_index 7; roll_shift 9 - par_round1: h_ordering 2, 3, 4, 0, 1; data_index 0; roll_shift 11 - par_round1: h_ordering 1, 2, 3, 4, 0; data_index 9; roll_shift 13 - par_round1: h_ordering 0, 1, 2, 3, 4; data_index 2; roll_shift 15 - par_round1: h_ordering 4, 0, 1, 2, 3; data_index 11; roll_shift 15 - par_round1: h_ordering 3, 4, 0, 1, 2; data_index 4; roll_shift 5 - par_round1: h_ordering 2, 3, 4, 0, 1; data_index 13; roll_shift 7 - par_round1: h_ordering 1, 2, 3, 4, 0; data_index 6; roll_shift 7 - par_round1: h_ordering 0, 1, 2, 3, 4; data_index 15; roll_shift 8 - par_round1: h_ordering 4, 0, 1, 2, 3; data_index 8; roll_shift 11 - par_round1: h_ordering 3, 4, 0, 1, 2; data_index 1; roll_shift 14 - par_round1: h_ordering 2, 3, 4, 0, 1; data_index 10; roll_shift 14 - par_round1: h_ordering 1, 2, 3, 4, 0; data_index 3; roll_shift 12 - par_round1: h_ordering 0, 1, 2, 3, 4; data_index 12; roll_shift 6; - - // Parallel Round 2 - par_round2: h_ordering 4, 0, 1, 2, 3; data_index 6; roll_shift 9 - par_round2: h_ordering 3, 4, 0, 1, 2; data_index 11; roll_shift 13 - par_round2: h_ordering 2, 3, 4, 0, 1; data_index 3; roll_shift 15 - par_round2: h_ordering 1, 2, 3, 4, 0; data_index 7; roll_shift 7 - par_round2: h_ordering 0, 1, 2, 3, 4; data_index 0; roll_shift 12 - par_round2: h_ordering 4, 0, 1, 2, 3; data_index 13; roll_shift 8 - par_round2: h_ordering 3, 4, 0, 1, 2; data_index 5; roll_shift 9 - par_round2: h_ordering 2, 3, 4, 0, 1; data_index 10; roll_shift 11 - par_round2: h_ordering 1, 2, 3, 4, 0; data_index 14; roll_shift 7 - par_round2: h_ordering 0, 1, 2, 3, 4; data_index 15; roll_shift 7 - par_round2: h_ordering 4, 0, 1, 2, 3; data_index 8; roll_shift 12 - par_round2: h_ordering 3, 4, 0, 1, 2; data_index 12; roll_shift 7 - par_round2: h_ordering 2, 3, 4, 0, 1; data_index 4; roll_shift 6 - par_round2: h_ordering 1, 2, 3, 4, 0; data_index 9; roll_shift 15 - par_round2: h_ordering 0, 1, 2, 3, 4; data_index 1; roll_shift 13 - par_round2: h_ordering 4, 0, 1, 2, 3; data_index 2; roll_shift 11; - - // Parallel Round 3 - par_round3: h_ordering 3, 4, 0, 1, 2; data_index 15; roll_shift 9 - par_round3: h_ordering 2, 3, 4, 0, 1; data_index 5; roll_shift 7 - par_round3: h_ordering 1, 2, 3, 4, 0; data_index 1; roll_shift 15 - par_round3: h_ordering 0, 1, 2, 3, 4; data_index 3; roll_shift 11 - par_round3: h_ordering 4, 0, 1, 2, 3; data_index 7; roll_shift 8 - par_round3: h_ordering 3, 4, 0, 1, 2; data_index 14; roll_shift 6 - par_round3: h_ordering 2, 3, 4, 0, 1; data_index 6; roll_shift 6 - par_round3: h_ordering 1, 2, 3, 4, 0; data_index 9; roll_shift 14 - par_round3: h_ordering 0, 1, 2, 3, 4; data_index 11; roll_shift 12 - par_round3: h_ordering 4, 0, 1, 2, 3; data_index 8; roll_shift 13 - par_round3: h_ordering 3, 4, 0, 1, 2; data_index 12; roll_shift 5 - par_round3: h_ordering 2, 3, 4, 0, 1; data_index 2; roll_shift 14 - par_round3: h_ordering 1, 2, 3, 4, 0; data_index 10; roll_shift 13 - par_round3: h_ordering 0, 1, 2, 3, 4; data_index 0; roll_shift 13 - par_round3: h_ordering 4, 0, 1, 2, 3; data_index 4; roll_shift 7 - par_round3: h_ordering 3, 4, 0, 1, 2; data_index 13; roll_shift 5; - - // Parallel Round 4 - par_round4: h_ordering 2, 3, 4, 0, 1; data_index 8; roll_shift 15 - par_round4: h_ordering 1, 2, 3, 4, 0; data_index 6; roll_shift 5 - par_round4: h_ordering 0, 1, 2, 3, 4; data_index 4; roll_shift 8 - par_round4: h_ordering 4, 0, 1, 2, 3; data_index 1; roll_shift 11 - par_round4: h_ordering 3, 4, 0, 1, 2; data_index 3; roll_shift 14 - par_round4: h_ordering 2, 3, 4, 0, 1; data_index 11; roll_shift 14 - par_round4: h_ordering 1, 2, 3, 4, 0; data_index 15; roll_shift 6 - par_round4: h_ordering 0, 1, 2, 3, 4; data_index 0; roll_shift 14 - par_round4: h_ordering 4, 0, 1, 2, 3; data_index 5; roll_shift 6 - par_round4: h_ordering 3, 4, 0, 1, 2; data_index 12; roll_shift 9 - par_round4: h_ordering 2, 3, 4, 0, 1; data_index 2; roll_shift 12 - par_round4: h_ordering 1, 2, 3, 4, 0; data_index 13; roll_shift 9 - par_round4: h_ordering 0, 1, 2, 3, 4; data_index 9; roll_shift 12 - par_round4: h_ordering 4, 0, 1, 2, 3; data_index 7; roll_shift 5 - par_round4: h_ordering 3, 4, 0, 1, 2; data_index 10; roll_shift 15 - par_round4: h_ordering 2, 3, 4, 0, 1; data_index 14; roll_shift 8; - - // Parallel Round 5 - par_round5: h_ordering 1, 2, 3, 4, 0; data_index 12; roll_shift 8 - par_round5: h_ordering 0, 1, 2, 3, 4; data_index 15; roll_shift 5 - par_round5: h_ordering 4, 0, 1, 2, 3; data_index 10; roll_shift 12 - par_round5: h_ordering 3, 4, 0, 1, 2; data_index 4; roll_shift 9 - par_round5: h_ordering 2, 3, 4, 0, 1; data_index 1; roll_shift 12 - par_round5: h_ordering 1, 2, 3, 4, 0; data_index 5; roll_shift 5 - par_round5: h_ordering 0, 1, 2, 3, 4; data_index 8; roll_shift 14 - par_round5: h_ordering 4, 0, 1, 2, 3; data_index 7; roll_shift 6 - par_round5: h_ordering 3, 4, 0, 1, 2; data_index 6; roll_shift 8 - par_round5: h_ordering 2, 3, 4, 0, 1; data_index 2; roll_shift 13 - par_round5: h_ordering 1, 2, 3, 4, 0; data_index 13; roll_shift 6 - par_round5: h_ordering 0, 1, 2, 3, 4; data_index 14; roll_shift 5 - par_round5: h_ordering 4, 0, 1, 2, 3; data_index 0; roll_shift 15 - par_round5: h_ordering 3, 4, 0, 1, 2; data_index 3; roll_shift 13 - par_round5: h_ordering 2, 3, 4, 0, 1; data_index 9; roll_shift 11 - par_round5: h_ordering 1, 2, 3, 4, 0; data_index 11; roll_shift 11; - ); -} diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c256.rs b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c256.rs deleted file mode 100644 index bdcd0c393169..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c256.rs +++ /dev/null @@ -1,273 +0,0 @@ -use core::{convert::TryInto, mem::swap}; - -pub const DIGEST_BUF_LEN: usize = 8; -pub const HALF_DIGEST_BUF_LEN: usize = DIGEST_BUF_LEN / 2; -pub const WORK_BUF_LEN: usize = 16; - -pub const H0: [u32; DIGEST_BUF_LEN] = [ - 0x6745_2301, - 0xefcd_ab89, - 0x98ba_dcfe, - 0x1032_5476, - 0x7654_3210, - 0xfedc_ba98, - 0x89ab_cdef, - 0x0123_4567, -]; - -macro_rules! round( - ($a:expr, $b:expr, $c:expr, $d:expr, - $x:expr, $bits:expr, $add:expr, $round:expr) => ({ - $a = $a.wrapping_add($round).wrapping_add($x).wrapping_add($add); - $a = $a.rotate_left($bits); - }); -); - -#[inline(always)] -fn swap_idx(bb: &mut [u32; HALF_DIGEST_BUF_LEN], bbb: &mut [u32; HALF_DIGEST_BUF_LEN], idx: usize) { - swap(&mut bb[idx], &mut bbb[idx]); -} - -macro_rules! process_block( - ($h:ident, $data:expr, - $( round1: h_ordering $f0:expr, $f1:expr, $f2:expr, $f3:expr; - data_index $data_index1:expr; roll_shift $bits1:expr )*; - $( round2: h_ordering $g0:expr, $g1:expr, $g2:expr, $g3:expr; - data_index $data_index2:expr; roll_shift $bits2:expr )*; - $( round3: h_ordering $h0:expr, $h1:expr, $h2:expr, $h3:expr; - data_index $data_index3:expr; roll_shift $bits3:expr )*; - $( round4: h_ordering $i0:expr, $i1:expr, $i2:expr, $i3:expr; - data_index $data_index4:expr; roll_shift $bits4:expr )*; - $( par_round1: h_ordering $pi0:expr, $pi1:expr, $pi2:expr, $pi3:expr; - data_index $pdata_index1:expr; roll_shift $pbits1:expr )*; - $( par_round2: h_ordering $ph0:expr, $ph1:expr, $ph2:expr, $ph3:expr; - data_index $pdata_index2:expr; roll_shift $pbits2:expr )*; - $( par_round3: h_ordering $pg0:expr, $pg1:expr, $pg2:expr, $pg3:expr; - data_index $pdata_index3:expr; roll_shift $pbits3:expr )*; - $( par_round4: h_ordering $pf0:expr, $pf1:expr, $pf2:expr, $pf3:expr; - data_index $pdata_index4:expr; roll_shift $pbits4:expr )*; - ) => ({ - let mut bb = [0u32; HALF_DIGEST_BUF_LEN]; - bb.copy_from_slice(&$h[..HALF_DIGEST_BUF_LEN]); - - let mut bbb = [0u32; HALF_DIGEST_BUF_LEN]; - bbb.copy_from_slice(&$h[HALF_DIGEST_BUF_LEN..]); - - - // Round 1 - $( round!(bb[$f0], bb[$f1], bb[$f2], bb[$f3], - $data[$data_index1], $bits1, 0x0000_0000, - bb[$f1] ^ bb[$f2] ^ bb[$f3]); )* - - // Parallel Round 1 - $( round!(bbb[$pi0], bbb[$pi1], bbb[$pi2], bbb[$pi3], - $data[$pdata_index1], $pbits1, 0x50a2_8be6, - (bbb[$pi1] & bbb[$pi3]) | (bbb[$pi2] & !bbb[$pi3])); )* - - swap_idx(&mut bb, &mut bbb, 0); - - - // Round 2 - $( round!(bb[$g0], bb[$g1], bb[$g2], bb[$g3], - $data[$data_index2], $bits2, 0x5a82_7999, - (bb[$g1] & bb[$g2]) | (!bb[$g1] & bb[$g3])); )* - - // Parallel Round 2 - $( round!(bbb[$ph0], bbb[$ph1], bbb[$ph2], bbb[$ph3], - $data[$pdata_index2], $pbits2, 0x5c4d_d124, - (bbb[$ph1] | !bbb[$ph2]) ^ bbb[$ph3]); )* - - - swap_idx(&mut bb, &mut bbb, 1); - - - // Round 3 - $( round!(bb[$h0], bb[$h1], bb[$h2], bb[$h3], - $data[$data_index3], $bits3, 0x6ed9_eba1, - (bb[$h1] | !bb[$h2]) ^ bb[$h3]); )* - - // Parallel Round 3 - $( round!(bbb[$pg0], bbb[$pg1], bbb[$pg2], bbb[$pg3], - $data[$pdata_index3], $pbits3, 0x6d70_3ef3, - (bbb[$pg1] & bbb[$pg2]) | (!bbb[$pg1] & bbb[$pg3])); )* - - swap_idx(&mut bb, &mut bbb, 2); - - - // Round 4 - $( round!(bb[$i0], bb[$i1], bb[$i2], bb[$i3], - $data[$data_index4], $bits4, 0x8f1b_bcdc, - (bb[$i1] & bb[$i3]) | (bb[$i2] & !bb[$i3])); )* - - - // Parallel Round 4 - $( round!(bbb[$pf0], bbb[$pf1], bbb[$pf2], bbb[$pf3], - $data[$pdata_index4], $pbits4, 0x0000_0000, - bbb[$pf1] ^ bbb[$pf2] ^ bbb[$pf3]); )* - - swap_idx(&mut bb, &mut bbb, 3); - - $h[0] = $h[0].wrapping_add(bb[0]); - $h[1] = $h[1].wrapping_add(bb[1]); - $h[2] = $h[2].wrapping_add(bb[2]); - $h[3] = $h[3].wrapping_add(bb[3]); - $h[4] = $h[4].wrapping_add(bbb[0]); - $h[5] = $h[5].wrapping_add(bbb[1]); - $h[6] = $h[6].wrapping_add(bbb[2]); - $h[7] = $h[7].wrapping_add(bbb[3]); - }); -); - -pub fn compress(h: &mut [u32; DIGEST_BUF_LEN], data: &[u8; 64]) { - let mut w = [0u32; WORK_BUF_LEN]; - for (o, chunk) in w.iter_mut().zip(data.chunks_exact(4)) { - *o = u32::from_le_bytes(chunk.try_into().unwrap()); - } - - process_block!(h, w[..], - - // Round 1 - round1: h_ordering 0, 1, 2, 3; data_index 0; roll_shift 11 - round1: h_ordering 3, 0, 1, 2; data_index 1; roll_shift 14 - round1: h_ordering 2, 3, 0, 1; data_index 2; roll_shift 15 - round1: h_ordering 1, 2, 3, 0; data_index 3; roll_shift 12 - round1: h_ordering 0, 1, 2, 3; data_index 4; roll_shift 5 - round1: h_ordering 3, 0, 1, 2; data_index 5; roll_shift 8 - round1: h_ordering 2, 3, 0, 1; data_index 6; roll_shift 7 - round1: h_ordering 1, 2, 3, 0; data_index 7; roll_shift 9 - round1: h_ordering 0, 1, 2, 3; data_index 8; roll_shift 11 - round1: h_ordering 3, 0, 1, 2; data_index 9; roll_shift 13 - round1: h_ordering 2, 3, 0, 1; data_index 10; roll_shift 14 - round1: h_ordering 1, 2, 3, 0; data_index 11; roll_shift 15 - round1: h_ordering 0, 1, 2, 3; data_index 12; roll_shift 6 - round1: h_ordering 3, 0, 1, 2; data_index 13; roll_shift 7 - round1: h_ordering 2, 3, 0, 1; data_index 14; roll_shift 9 - round1: h_ordering 1, 2, 3, 0; data_index 15; roll_shift 8; - - // Round 2 - round2: h_ordering 0, 1, 2, 3; data_index 7; roll_shift 7 - round2: h_ordering 3, 0, 1, 2; data_index 4; roll_shift 6 - round2: h_ordering 2, 3, 0, 1; data_index 13; roll_shift 8 - round2: h_ordering 1, 2, 3, 0; data_index 1; roll_shift 13 - round2: h_ordering 0, 1, 2, 3; data_index 10; roll_shift 11 - round2: h_ordering 3, 0, 1, 2; data_index 6; roll_shift 9 - round2: h_ordering 2, 3, 0, 1; data_index 15; roll_shift 7 - round2: h_ordering 1, 2, 3, 0; data_index 3; roll_shift 15 - round2: h_ordering 0, 1, 2, 3; data_index 12; roll_shift 7 - round2: h_ordering 3, 0, 1, 2; data_index 0; roll_shift 12 - round2: h_ordering 2, 3, 0, 1; data_index 9; roll_shift 15 - round2: h_ordering 1, 2, 3, 0; data_index 5; roll_shift 9 - round2: h_ordering 0, 1, 2, 3; data_index 2; roll_shift 11 - round2: h_ordering 3, 0, 1, 2; data_index 14; roll_shift 7 - round2: h_ordering 2, 3, 0, 1; data_index 11; roll_shift 13 - round2: h_ordering 1, 2, 3, 0; data_index 8; roll_shift 12; - - // Round 3 - round3: h_ordering 0, 1, 2, 3; data_index 3; roll_shift 11 - round3: h_ordering 3, 0, 1, 2; data_index 10; roll_shift 13 - round3: h_ordering 2, 3, 0, 1; data_index 14; roll_shift 6 - round3: h_ordering 1, 2, 3, 0; data_index 4; roll_shift 7 - round3: h_ordering 0, 1, 2, 3; data_index 9; roll_shift 14 - round3: h_ordering 3, 0, 1, 2; data_index 15; roll_shift 9 - round3: h_ordering 2, 3, 0, 1; data_index 8; roll_shift 13 - round3: h_ordering 1, 2, 3, 0; data_index 1; roll_shift 15 - round3: h_ordering 0, 1, 2, 3; data_index 2; roll_shift 14 - round3: h_ordering 3, 0, 1, 2; data_index 7; roll_shift 8 - round3: h_ordering 2, 3, 0, 1; data_index 0; roll_shift 13 - round3: h_ordering 1, 2, 3, 0; data_index 6; roll_shift 6 - round3: h_ordering 0, 1, 2, 3; data_index 13; roll_shift 5 - round3: h_ordering 3, 0, 1, 2; data_index 11; roll_shift 12 - round3: h_ordering 2, 3, 0, 1; data_index 5; roll_shift 7 - round3: h_ordering 1, 2, 3, 0; data_index 12; roll_shift 5; - - // Round 4 - round4: h_ordering 0, 1, 2, 3; data_index 1; roll_shift 11 - round4: h_ordering 3, 0, 1, 2; data_index 9; roll_shift 12 - round4: h_ordering 2, 3, 0, 1; data_index 11; roll_shift 14 - round4: h_ordering 1, 2, 3, 0; data_index 10; roll_shift 15 - round4: h_ordering 0, 1, 2, 3; data_index 0; roll_shift 14 - round4: h_ordering 3, 0, 1, 2; data_index 8; roll_shift 15 - round4: h_ordering 2, 3, 0, 1; data_index 12; roll_shift 9 - round4: h_ordering 1, 2, 3, 0; data_index 4; roll_shift 8 - round4: h_ordering 0, 1, 2, 3; data_index 13; roll_shift 9 - round4: h_ordering 3, 0, 1, 2; data_index 3; roll_shift 14 - round4: h_ordering 2, 3, 0, 1; data_index 7; roll_shift 5 - round4: h_ordering 1, 2, 3, 0; data_index 15; roll_shift 6 - round4: h_ordering 0, 1, 2, 3; data_index 14; roll_shift 8 - round4: h_ordering 3, 0, 1, 2; data_index 5; roll_shift 6 - round4: h_ordering 2, 3, 0, 1; data_index 6; roll_shift 5 - round4: h_ordering 1, 2, 3, 0; data_index 2; roll_shift 12; - - // Parallel Round 1 - par_round1: h_ordering 0, 1, 2, 3; data_index 5; roll_shift 8 - par_round1: h_ordering 3, 0, 1, 2; data_index 14; roll_shift 9 - par_round1: h_ordering 2, 3, 0, 1; data_index 7; roll_shift 9 - par_round1: h_ordering 1, 2, 3, 0; data_index 0; roll_shift 11 - par_round1: h_ordering 0, 1, 2, 3; data_index 9; roll_shift 13 - par_round1: h_ordering 3, 0, 1, 2; data_index 2; roll_shift 15 - par_round1: h_ordering 2, 3, 0, 1; data_index 11; roll_shift 15 - par_round1: h_ordering 1, 2, 3, 0; data_index 4; roll_shift 5 - par_round1: h_ordering 0, 1, 2, 3; data_index 13; roll_shift 7 - par_round1: h_ordering 3, 0, 1, 2; data_index 6; roll_shift 7 - par_round1: h_ordering 2, 3, 0, 1; data_index 15; roll_shift 8 - par_round1: h_ordering 1, 2, 3, 0; data_index 8; roll_shift 11 - par_round1: h_ordering 0, 1, 2, 3; data_index 1; roll_shift 14 - par_round1: h_ordering 3, 0, 1, 2; data_index 10; roll_shift 14 - par_round1: h_ordering 2, 3, 0, 1; data_index 3; roll_shift 12 - par_round1: h_ordering 1, 2, 3, 0; data_index 12; roll_shift 6; - - // Parallel Round 2 - par_round2: h_ordering 0, 1, 2, 3; data_index 6; roll_shift 9 - par_round2: h_ordering 3, 0, 1, 2; data_index 11; roll_shift 13 - par_round2: h_ordering 2, 3, 0, 1; data_index 3; roll_shift 15 - par_round2: h_ordering 1, 2, 3, 0; data_index 7; roll_shift 7 - par_round2: h_ordering 0, 1, 2, 3; data_index 0; roll_shift 12 - par_round2: h_ordering 3, 0, 1, 2; data_index 13; roll_shift 8 - par_round2: h_ordering 2, 3, 0, 1; data_index 5; roll_shift 9 - par_round2: h_ordering 1, 2, 3, 0; data_index 10; roll_shift 11 - par_round2: h_ordering 0, 1, 2, 3; data_index 14; roll_shift 7 - par_round2: h_ordering 3, 0, 1, 2; data_index 15; roll_shift 7 - par_round2: h_ordering 2, 3, 0, 1; data_index 8; roll_shift 12 - par_round2: h_ordering 1, 2, 3, 0; data_index 12; roll_shift 7 - par_round2: h_ordering 0, 1, 2, 3; data_index 4; roll_shift 6 - par_round2: h_ordering 3, 0, 1, 2; data_index 9; roll_shift 15 - par_round2: h_ordering 2, 3, 0, 1; data_index 1; roll_shift 13 - par_round2: h_ordering 1, 2, 3, 0; data_index 2; roll_shift 11; - - // Parallel Round 3 - par_round3: h_ordering 0, 1, 2, 3; data_index 15; roll_shift 9 - par_round3: h_ordering 3, 0, 1, 2; data_index 5; roll_shift 7 - par_round3: h_ordering 2, 3, 0, 1; data_index 1; roll_shift 15 - par_round3: h_ordering 1, 2, 3, 0; data_index 3; roll_shift 11 - par_round3: h_ordering 0, 1, 2, 3; data_index 7; roll_shift 8 - par_round3: h_ordering 3, 0, 1, 2; data_index 14; roll_shift 6 - par_round3: h_ordering 2, 3, 0, 1; data_index 6; roll_shift 6 - par_round3: h_ordering 1, 2, 3, 0; data_index 9; roll_shift 14 - par_round3: h_ordering 0, 1, 2, 3; data_index 11; roll_shift 12 - par_round3: h_ordering 3, 0, 1, 2; data_index 8; roll_shift 13 - par_round3: h_ordering 2, 3, 0, 1; data_index 12; roll_shift 5 - par_round3: h_ordering 1, 2, 3, 0; data_index 2; roll_shift 14 - par_round3: h_ordering 0, 1, 2, 3; data_index 10; roll_shift 13 - par_round3: h_ordering 3, 0, 1, 2; data_index 0; roll_shift 13 - par_round3: h_ordering 2, 3, 0, 1; data_index 4; roll_shift 7 - par_round3: h_ordering 1, 2, 3, 0; data_index 13; roll_shift 5; - - // Parallel Round 4 - par_round4: h_ordering 0, 1, 2, 3; data_index 8; roll_shift 15 - par_round4: h_ordering 3, 0, 1, 2; data_index 6; roll_shift 5 - par_round4: h_ordering 2, 3, 0, 1; data_index 4; roll_shift 8 - par_round4: h_ordering 1, 2, 3, 0; data_index 1; roll_shift 11 - par_round4: h_ordering 0, 1, 2, 3; data_index 3; roll_shift 14 - par_round4: h_ordering 3, 0, 1, 2; data_index 11; roll_shift 14 - par_round4: h_ordering 2, 3, 0, 1; data_index 15; roll_shift 6 - par_round4: h_ordering 1, 2, 3, 0; data_index 0; roll_shift 14 - par_round4: h_ordering 0, 1, 2, 3; data_index 5; roll_shift 6 - par_round4: h_ordering 3, 0, 1, 2; data_index 12; roll_shift 9 - par_round4: h_ordering 2, 3, 0, 1; data_index 2; roll_shift 12 - par_round4: h_ordering 1, 2, 3, 0; data_index 13; roll_shift 9 - par_round4: h_ordering 0, 1, 2, 3; data_index 9; roll_shift 12 - par_round4: h_ordering 3, 0, 1, 2; data_index 7; roll_shift 5 - par_round4: h_ordering 2, 3, 0, 1; data_index 10; roll_shift 15 - par_round4: h_ordering 1, 2, 3, 0; data_index 14; roll_shift 8; - ); -} diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c320.rs b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c320.rs deleted file mode 100644 index af85eff2a0b3..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/c320.rs +++ /dev/null @@ -1,331 +0,0 @@ -use core::{convert::TryInto, mem::swap}; - -pub const HALF_DIGEST_BUF_LEN: usize = 5; -pub const DIGEST_BUF_LEN: usize = 10; -pub const WORK_BUF_LEN: usize = 16; - -pub const H0: [u32; DIGEST_BUF_LEN] = [ - 0x6745_2301, - 0xefcd_ab89, - 0x98ba_dcfe, - 0x1032_5476, - 0xc3d2_e1f0, - 0x7654_3210, - 0xfedc_ba98, - 0x89ab_cdef, - 0x0123_4567, - 0x3c2d_1e0f, -]; - -macro_rules! round( - ($a:expr, $b:expr, $c:expr, $d:expr, $e:expr, - $x:expr, $bits:expr, $add:expr, $round:expr) => ({ - $a = $a.wrapping_add($round).wrapping_add($x).wrapping_add($add); - $a = $a.rotate_left($bits).wrapping_add($e); - $c = $c.rotate_left(10); - }); -); - -#[inline(always)] -fn swap_idx(bb: &mut [u32; HALF_DIGEST_BUF_LEN], bbb: &mut [u32; HALF_DIGEST_BUF_LEN], idx: usize) { - swap(&mut bb[idx], &mut bbb[idx]); -} - -macro_rules! process_block( - ($h:ident, $data:expr, - $( round1: h_ordering $f0:expr, $f1:expr, $f2:expr, $f3:expr, $f4:expr; - data_index $data_index1:expr; roll_shift $bits1:expr )*; - $( round2: h_ordering $g0:expr, $g1:expr, $g2:expr, $g3:expr, $g4:expr; - data_index $data_index2:expr; roll_shift $bits2:expr )*; - $( round3: h_ordering $h0:expr, $h1:expr, $h2:expr, $h3:expr, $h4:expr; - data_index $data_index3:expr; roll_shift $bits3:expr )*; - $( round4: h_ordering $i0:expr, $i1:expr, $i2:expr, $i3:expr, $i4:expr; - data_index $data_index4:expr; roll_shift $bits4:expr )*; - $( round5: h_ordering $j0:expr, $j1:expr, $j2:expr, $j3:expr, $j4:expr; - data_index $data_index5:expr; roll_shift $bits5:expr )*; - $( par_round1: h_ordering $pj0:expr, $pj1:expr, $pj2:expr, $pj3:expr, $pj4:expr; - data_index $pdata_index1:expr; roll_shift $pbits1:expr )*; - $( par_round2: h_ordering $pi0:expr, $pi1:expr, $pi2:expr, $pi3:expr, $pi4:expr; - data_index $pdata_index2:expr; roll_shift $pbits2:expr )*; - $( par_round3: h_ordering $ph0:expr, $ph1:expr, $ph2:expr, $ph3:expr, $ph4:expr; - data_index $pdata_index3:expr; roll_shift $pbits3:expr )*; - $( par_round4: h_ordering $pg0:expr, $pg1:expr, $pg2:expr, $pg3:expr, $pg4:expr; - data_index $pdata_index4:expr; roll_shift $pbits4:expr )*; - $( par_round5: h_ordering $pf0:expr, $pf1:expr, $pf2:expr, $pf3:expr, $pf4:expr; - data_index $pdata_index5:expr; roll_shift $pbits5:expr )*; - ) => ({ - let mut bb = [0u32; HALF_DIGEST_BUF_LEN]; - bb.copy_from_slice(&$h[..HALF_DIGEST_BUF_LEN]); - - let mut bbb = [0u32; HALF_DIGEST_BUF_LEN]; - bbb.copy_from_slice(&$h[HALF_DIGEST_BUF_LEN..]); - - - // Round 1 - $( round!(bb[$f0], bb[$f1], bb[$f2], bb[$f3], bb[$f4], - $data[$data_index1], $bits1, 0x0000_0000, - bb[$f1] ^ bb[$f2] ^ bb[$f3]); )* - - // Parallel Round 1 - $( round!(bbb[$pj0], bbb[$pj1], bbb[$pj2], bbb[$pj3], bbb[$pj4], - $data[$pdata_index1], $pbits1, 0x50a2_8be6, - bbb[$pj1] ^ (bbb[$pj2] | !bbb[$pj3])); )* - - swap_idx(&mut bb, &mut bbb, 0); - - - // Round 2 - $( round!(bb[$g0], bb[$g1], bb[$g2], bb[$g3], bb[$g4], - $data[$data_index2], $bits2, 0x5a82_7999, - (bb[$g1] & bb[$g2]) | (!bb[$g1] & bb[$g3])); )* - - // Parallel Round 2 - $( round!(bbb[$pi0], bbb[$pi1], bbb[$pi2], bbb[$pi3], bbb[$pi4], - $data[$pdata_index2], $pbits2, 0x5c4d_d124, - (bbb[$pi1] & bbb[$pi3]) | (bbb[$pi2] & !bbb[$pi3])); )* - - - swap_idx(&mut bb, &mut bbb, 1); - - - // Round 3 - $( round!(bb[$h0], bb[$h1], bb[$h2], bb[$h3], bb[$h4], - $data[$data_index3], $bits3, 0x6ed9_eba1, - (bb[$h1] | !bb[$h2]) ^ bb[$h3]); )* - - // Parallel Round 3 - $( round!(bbb[$ph0], bbb[$ph1], bbb[$ph2], bbb[$ph3], bbb[$ph4], - $data[$pdata_index3], $pbits3, 0x6d70_3ef3, - (bbb[$ph1] | !bbb[$ph2]) ^ bbb[$ph3]); )* - - swap_idx(&mut bb, &mut bbb, 2); - - - // Round 4 - $( round!(bb[$i0], bb[$i1], bb[$i2], bb[$i3], bb[$i4], - $data[$data_index4], $bits4, 0x8f1b_bcdc, - (bb[$i1] & bb[$i3]) | (bb[$i2] & !bb[$i3])); )* - - - // Parallel Round 4 - $( round!(bbb[$pg0], bbb[$pg1], bbb[$pg2], bbb[$pg3], bbb[$pg4], - $data[$pdata_index4], $pbits4, 0x7a6d_76e9, - (bbb[$pg1] & bbb[$pg2]) | (!bbb[$pg1] & bbb[$pg3])); )* - - swap_idx(&mut bb, &mut bbb, 3); - - // Round 5 - $( round!(bb[$j0], bb[$j1], bb[$j2], bb[$j3], bb[$j4], - $data[$data_index5], $bits5, 0xa953_fd4e, - bb[$j1] ^ (bb[$j2] | !bb[$j3])); )* - - // Parallel Round 5 - $( round!(bbb[$pf0], bbb[$pf1], bbb[$pf2], bbb[$pf3], bbb[$pf4], - $data[$pdata_index5], $pbits5, 0x0000_0000, - bbb[$pf1] ^ bbb[$pf2] ^ bbb[$pf3]); )* - - swap_idx(&mut bb, &mut bbb, 4); - - - $h[0] = $h[0].wrapping_add(bb[0]); - $h[1] = $h[1].wrapping_add(bb[1]); - $h[2] = $h[2].wrapping_add(bb[2]); - $h[3] = $h[3].wrapping_add(bb[3]); - $h[4] = $h[4].wrapping_add(bb[4]); - $h[5] = $h[5].wrapping_add(bbb[0]); - $h[6] = $h[6].wrapping_add(bbb[1]); - $h[7] = $h[7].wrapping_add(bbb[2]); - $h[8] = $h[8].wrapping_add(bbb[3]); - $h[9] = $h[9].wrapping_add(bbb[4]); - - }); -); - -pub fn compress(h: &mut [u32; DIGEST_BUF_LEN], data: &[u8; 64]) { - let mut w = [0u32; WORK_BUF_LEN]; - for (o, chunk) in w.iter_mut().zip(data.chunks_exact(4)) { - *o = u32::from_le_bytes(chunk.try_into().unwrap()); - } - - process_block!(h, w[..], - // Round 1 - round1: h_ordering 0, 1, 2, 3, 4; data_index 0; roll_shift 11 - round1: h_ordering 4, 0, 1, 2, 3; data_index 1; roll_shift 14 - round1: h_ordering 3, 4, 0, 1, 2; data_index 2; roll_shift 15 - round1: h_ordering 2, 3, 4, 0, 1; data_index 3; roll_shift 12 - round1: h_ordering 1, 2, 3, 4, 0; data_index 4; roll_shift 5 - round1: h_ordering 0, 1, 2, 3, 4; data_index 5; roll_shift 8 - round1: h_ordering 4, 0, 1, 2, 3; data_index 6; roll_shift 7 - round1: h_ordering 3, 4, 0, 1, 2; data_index 7; roll_shift 9 - round1: h_ordering 2, 3, 4, 0, 1; data_index 8; roll_shift 11 - round1: h_ordering 1, 2, 3, 4, 0; data_index 9; roll_shift 13 - round1: h_ordering 0, 1, 2, 3, 4; data_index 10; roll_shift 14 - round1: h_ordering 4, 0, 1, 2, 3; data_index 11; roll_shift 15 - round1: h_ordering 3, 4, 0, 1, 2; data_index 12; roll_shift 6 - round1: h_ordering 2, 3, 4, 0, 1; data_index 13; roll_shift 7 - round1: h_ordering 1, 2, 3, 4, 0; data_index 14; roll_shift 9 - round1: h_ordering 0, 1, 2, 3, 4; data_index 15; roll_shift 8; - - // Round 2 - round2: h_ordering 4, 0, 1, 2, 3; data_index 7; roll_shift 7 - round2: h_ordering 3, 4, 0, 1, 2; data_index 4; roll_shift 6 - round2: h_ordering 2, 3, 4, 0, 1; data_index 13; roll_shift 8 - round2: h_ordering 1, 2, 3, 4, 0; data_index 1; roll_shift 13 - round2: h_ordering 0, 1, 2, 3, 4; data_index 10; roll_shift 11 - round2: h_ordering 4, 0, 1, 2, 3; data_index 6; roll_shift 9 - round2: h_ordering 3, 4, 0, 1, 2; data_index 15; roll_shift 7 - round2: h_ordering 2, 3, 4, 0, 1; data_index 3; roll_shift 15 - round2: h_ordering 1, 2, 3, 4, 0; data_index 12; roll_shift 7 - round2: h_ordering 0, 1, 2, 3, 4; data_index 0; roll_shift 12 - round2: h_ordering 4, 0, 1, 2, 3; data_index 9; roll_shift 15 - round2: h_ordering 3, 4, 0, 1, 2; data_index 5; roll_shift 9 - round2: h_ordering 2, 3, 4, 0, 1; data_index 2; roll_shift 11 - round2: h_ordering 1, 2, 3, 4, 0; data_index 14; roll_shift 7 - round2: h_ordering 0, 1, 2, 3, 4; data_index 11; roll_shift 13 - round2: h_ordering 4, 0, 1, 2, 3; data_index 8; roll_shift 12; - - // Round 3 - round3: h_ordering 3, 4, 0, 1, 2; data_index 3; roll_shift 11 - round3: h_ordering 2, 3, 4, 0, 1; data_index 10; roll_shift 13 - round3: h_ordering 1, 2, 3, 4, 0; data_index 14; roll_shift 6 - round3: h_ordering 0, 1, 2, 3, 4; data_index 4; roll_shift 7 - round3: h_ordering 4, 0, 1, 2, 3; data_index 9; roll_shift 14 - round3: h_ordering 3, 4, 0, 1, 2; data_index 15; roll_shift 9 - round3: h_ordering 2, 3, 4, 0, 1; data_index 8; roll_shift 13 - round3: h_ordering 1, 2, 3, 4, 0; data_index 1; roll_shift 15 - round3: h_ordering 0, 1, 2, 3, 4; data_index 2; roll_shift 14 - round3: h_ordering 4, 0, 1, 2, 3; data_index 7; roll_shift 8 - round3: h_ordering 3, 4, 0, 1, 2; data_index 0; roll_shift 13 - round3: h_ordering 2, 3, 4, 0, 1; data_index 6; roll_shift 6 - round3: h_ordering 1, 2, 3, 4, 0; data_index 13; roll_shift 5 - round3: h_ordering 0, 1, 2, 3, 4; data_index 11; roll_shift 12 - round3: h_ordering 4, 0, 1, 2, 3; data_index 5; roll_shift 7 - round3: h_ordering 3, 4, 0, 1, 2; data_index 12; roll_shift 5; - - // Round 4 - round4: h_ordering 2, 3, 4, 0, 1; data_index 1; roll_shift 11 - round4: h_ordering 1, 2, 3, 4, 0; data_index 9; roll_shift 12 - round4: h_ordering 0, 1, 2, 3, 4; data_index 11; roll_shift 14 - round4: h_ordering 4, 0, 1, 2, 3; data_index 10; roll_shift 15 - round4: h_ordering 3, 4, 0, 1, 2; data_index 0; roll_shift 14 - round4: h_ordering 2, 3, 4, 0, 1; data_index 8; roll_shift 15 - round4: h_ordering 1, 2, 3, 4, 0; data_index 12; roll_shift 9 - round4: h_ordering 0, 1, 2, 3, 4; data_index 4; roll_shift 8 - round4: h_ordering 4, 0, 1, 2, 3; data_index 13; roll_shift 9 - round4: h_ordering 3, 4, 0, 1, 2; data_index 3; roll_shift 14 - round4: h_ordering 2, 3, 4, 0, 1; data_index 7; roll_shift 5 - round4: h_ordering 1, 2, 3, 4, 0; data_index 15; roll_shift 6 - round4: h_ordering 0, 1, 2, 3, 4; data_index 14; roll_shift 8 - round4: h_ordering 4, 0, 1, 2, 3; data_index 5; roll_shift 6 - round4: h_ordering 3, 4, 0, 1, 2; data_index 6; roll_shift 5 - round4: h_ordering 2, 3, 4, 0, 1; data_index 2; roll_shift 12; - - // Round 5 - round5: h_ordering 1, 2, 3, 4, 0; data_index 4; roll_shift 9 - round5: h_ordering 0, 1, 2, 3, 4; data_index 0; roll_shift 15 - round5: h_ordering 4, 0, 1, 2, 3; data_index 5; roll_shift 5 - round5: h_ordering 3, 4, 0, 1, 2; data_index 9; roll_shift 11 - round5: h_ordering 2, 3, 4, 0, 1; data_index 7; roll_shift 6 - round5: h_ordering 1, 2, 3, 4, 0; data_index 12; roll_shift 8 - round5: h_ordering 0, 1, 2, 3, 4; data_index 2; roll_shift 13 - round5: h_ordering 4, 0, 1, 2, 3; data_index 10; roll_shift 12 - round5: h_ordering 3, 4, 0, 1, 2; data_index 14; roll_shift 5 - round5: h_ordering 2, 3, 4, 0, 1; data_index 1; roll_shift 12 - round5: h_ordering 1, 2, 3, 4, 0; data_index 3; roll_shift 13 - round5: h_ordering 0, 1, 2, 3, 4; data_index 8; roll_shift 14 - round5: h_ordering 4, 0, 1, 2, 3; data_index 11; roll_shift 11 - round5: h_ordering 3, 4, 0, 1, 2; data_index 6; roll_shift 8 - round5: h_ordering 2, 3, 4, 0, 1; data_index 15; roll_shift 5 - round5: h_ordering 1, 2, 3, 4, 0; data_index 13; roll_shift 6; - - // Parallel Round 1 - par_round1: h_ordering 0, 1, 2, 3, 4; data_index 5; roll_shift 8 - par_round1: h_ordering 4, 0, 1, 2, 3; data_index 14; roll_shift 9 - par_round1: h_ordering 3, 4, 0, 1, 2; data_index 7; roll_shift 9 - par_round1: h_ordering 2, 3, 4, 0, 1; data_index 0; roll_shift 11 - par_round1: h_ordering 1, 2, 3, 4, 0; data_index 9; roll_shift 13 - par_round1: h_ordering 0, 1, 2, 3, 4; data_index 2; roll_shift 15 - par_round1: h_ordering 4, 0, 1, 2, 3; data_index 11; roll_shift 15 - par_round1: h_ordering 3, 4, 0, 1, 2; data_index 4; roll_shift 5 - par_round1: h_ordering 2, 3, 4, 0, 1; data_index 13; roll_shift 7 - par_round1: h_ordering 1, 2, 3, 4, 0; data_index 6; roll_shift 7 - par_round1: h_ordering 0, 1, 2, 3, 4; data_index 15; roll_shift 8 - par_round1: h_ordering 4, 0, 1, 2, 3; data_index 8; roll_shift 11 - par_round1: h_ordering 3, 4, 0, 1, 2; data_index 1; roll_shift 14 - par_round1: h_ordering 2, 3, 4, 0, 1; data_index 10; roll_shift 14 - par_round1: h_ordering 1, 2, 3, 4, 0; data_index 3; roll_shift 12 - par_round1: h_ordering 0, 1, 2, 3, 4; data_index 12; roll_shift 6; - - // Parallel Round 2 - par_round2: h_ordering 4, 0, 1, 2, 3; data_index 6; roll_shift 9 - par_round2: h_ordering 3, 4, 0, 1, 2; data_index 11; roll_shift 13 - par_round2: h_ordering 2, 3, 4, 0, 1; data_index 3; roll_shift 15 - par_round2: h_ordering 1, 2, 3, 4, 0; data_index 7; roll_shift 7 - par_round2: h_ordering 0, 1, 2, 3, 4; data_index 0; roll_shift 12 - par_round2: h_ordering 4, 0, 1, 2, 3; data_index 13; roll_shift 8 - par_round2: h_ordering 3, 4, 0, 1, 2; data_index 5; roll_shift 9 - par_round2: h_ordering 2, 3, 4, 0, 1; data_index 10; roll_shift 11 - par_round2: h_ordering 1, 2, 3, 4, 0; data_index 14; roll_shift 7 - par_round2: h_ordering 0, 1, 2, 3, 4; data_index 15; roll_shift 7 - par_round2: h_ordering 4, 0, 1, 2, 3; data_index 8; roll_shift 12 - par_round2: h_ordering 3, 4, 0, 1, 2; data_index 12; roll_shift 7 - par_round2: h_ordering 2, 3, 4, 0, 1; data_index 4; roll_shift 6 - par_round2: h_ordering 1, 2, 3, 4, 0; data_index 9; roll_shift 15 - par_round2: h_ordering 0, 1, 2, 3, 4; data_index 1; roll_shift 13 - par_round2: h_ordering 4, 0, 1, 2, 3; data_index 2; roll_shift 11; - - // Parallel Round 3 - par_round3: h_ordering 3, 4, 0, 1, 2; data_index 15; roll_shift 9 - par_round3: h_ordering 2, 3, 4, 0, 1; data_index 5; roll_shift 7 - par_round3: h_ordering 1, 2, 3, 4, 0; data_index 1; roll_shift 15 - par_round3: h_ordering 0, 1, 2, 3, 4; data_index 3; roll_shift 11 - par_round3: h_ordering 4, 0, 1, 2, 3; data_index 7; roll_shift 8 - par_round3: h_ordering 3, 4, 0, 1, 2; data_index 14; roll_shift 6 - par_round3: h_ordering 2, 3, 4, 0, 1; data_index 6; roll_shift 6 - par_round3: h_ordering 1, 2, 3, 4, 0; data_index 9; roll_shift 14 - par_round3: h_ordering 0, 1, 2, 3, 4; data_index 11; roll_shift 12 - par_round3: h_ordering 4, 0, 1, 2, 3; data_index 8; roll_shift 13 - par_round3: h_ordering 3, 4, 0, 1, 2; data_index 12; roll_shift 5 - par_round3: h_ordering 2, 3, 4, 0, 1; data_index 2; roll_shift 14 - par_round3: h_ordering 1, 2, 3, 4, 0; data_index 10; roll_shift 13 - par_round3: h_ordering 0, 1, 2, 3, 4; data_index 0; roll_shift 13 - par_round3: h_ordering 4, 0, 1, 2, 3; data_index 4; roll_shift 7 - par_round3: h_ordering 3, 4, 0, 1, 2; data_index 13; roll_shift 5; - - // Parallel Round 4 - par_round4: h_ordering 2, 3, 4, 0, 1; data_index 8; roll_shift 15 - par_round4: h_ordering 1, 2, 3, 4, 0; data_index 6; roll_shift 5 - par_round4: h_ordering 0, 1, 2, 3, 4; data_index 4; roll_shift 8 - par_round4: h_ordering 4, 0, 1, 2, 3; data_index 1; roll_shift 11 - par_round4: h_ordering 3, 4, 0, 1, 2; data_index 3; roll_shift 14 - par_round4: h_ordering 2, 3, 4, 0, 1; data_index 11; roll_shift 14 - par_round4: h_ordering 1, 2, 3, 4, 0; data_index 15; roll_shift 6 - par_round4: h_ordering 0, 1, 2, 3, 4; data_index 0; roll_shift 14 - par_round4: h_ordering 4, 0, 1, 2, 3; data_index 5; roll_shift 6 - par_round4: h_ordering 3, 4, 0, 1, 2; data_index 12; roll_shift 9 - par_round4: h_ordering 2, 3, 4, 0, 1; data_index 2; roll_shift 12 - par_round4: h_ordering 1, 2, 3, 4, 0; data_index 13; roll_shift 9 - par_round4: h_ordering 0, 1, 2, 3, 4; data_index 9; roll_shift 12 - par_round4: h_ordering 4, 0, 1, 2, 3; data_index 7; roll_shift 5 - par_round4: h_ordering 3, 4, 0, 1, 2; data_index 10; roll_shift 15 - par_round4: h_ordering 2, 3, 4, 0, 1; data_index 14; roll_shift 8; - - // Parallel Round 5 - par_round5: h_ordering 1, 2, 3, 4, 0; data_index 12; roll_shift 8 - par_round5: h_ordering 0, 1, 2, 3, 4; data_index 15; roll_shift 5 - par_round5: h_ordering 4, 0, 1, 2, 3; data_index 10; roll_shift 12 - par_round5: h_ordering 3, 4, 0, 1, 2; data_index 4; roll_shift 9 - par_round5: h_ordering 2, 3, 4, 0, 1; data_index 1; roll_shift 12 - par_round5: h_ordering 1, 2, 3, 4, 0; data_index 5; roll_shift 5 - par_round5: h_ordering 0, 1, 2, 3, 4; data_index 8; roll_shift 14 - par_round5: h_ordering 4, 0, 1, 2, 3; data_index 7; roll_shift 6 - par_round5: h_ordering 3, 4, 0, 1, 2; data_index 6; roll_shift 8 - par_round5: h_ordering 2, 3, 4, 0, 1; data_index 2; roll_shift 13 - par_round5: h_ordering 1, 2, 3, 4, 0; data_index 13; roll_shift 6 - par_round5: h_ordering 0, 1, 2, 3, 4; data_index 14; roll_shift 5 - par_round5: h_ordering 4, 0, 1, 2, 3; data_index 0; roll_shift 15 - par_round5: h_ordering 3, 4, 0, 1, 2; data_index 3; roll_shift 13 - par_round5: h_ordering 2, 3, 4, 0, 1; data_index 9; roll_shift 11 - par_round5: h_ordering 1, 2, 3, 4, 0; data_index 11; roll_shift 11; - ); -} diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/lib.rs deleted file mode 100644 index 1a28ed76b897..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/src/lib.rs +++ /dev/null @@ -1,186 +0,0 @@ -//! An implementation of the [RIPEMD] cryptographic hash. -//! -//! This crate implements only the modified 1996 versions, not the original -//! one from 1992. -//! -//! Note that RIPEMD-256 provides only the same security as RIPEMD-128, -//! and RIPEMD-320 provides only the same security as RIPEMD-160. -//! -//! # Usage -//! -//! ```rust -//! use hex_literal::hex; -//! use ripemd::{Ripemd160, Ripemd320, Digest}; -//! -//! // create a RIPEMD-160 hasher instance -//! let mut hasher = Ripemd160::new(); -//! -//! // process input message -//! hasher.update(b"Hello world!"); -//! -//! // acquire hash digest in the form of GenericArray, -//! // which in this case is equivalent to [u8; 20] -//! let result = hasher.finalize(); -//! assert_eq!(result[..], hex!("7f772647d88750add82d8e1a7a3e5c0902a346a3")); -//! -//! // same for RIPEMD-320 -//! let mut hasher = Ripemd320::new(); -//! hasher.update(b"Hello world!"); -//! let result = hasher.finalize(); -//! assert_eq!(&result[..], &hex!(" -//! f1c1c231d301abcf2d7daae0269ff3e7bc68e623 -//! ad723aa068d316b056d26b7d1bb6f0cc0f28336d -//! ")[..]); -//! ``` -//! -//! Also see [RustCrypto/hashes] readme. -//! -//! [RIPEMD]: https://en.wikipedia.org/wiki/RIPEMD -//! [RustCrypto/hashes]: https://github.com/RustCrypto/hashes - -#![no_std] -#![doc( - html_logo_url = "https://raw.githubusercontent.com/RustCrypto/media/6ee8e381/logo.svg", - html_favicon_url = "https://raw.githubusercontent.com/RustCrypto/media/6ee8e381/logo.svg" -)] -#![forbid(unsafe_code)] -#![warn(missing_docs, rust_2018_idioms)] - -pub use digest::{self, Digest}; - -use core::fmt; -#[cfg(feature = "oid")] -use digest::const_oid::{AssociatedOid, ObjectIdentifier}; -use digest::{ - block_buffer::Eager, - core_api::{ - AlgorithmName, Block, BlockSizeUser, Buffer, BufferKindUser, CoreWrapper, FixedOutputCore, - OutputSizeUser, Reset, UpdateCore, - }, - typenum::{Unsigned, U16, U20, U32, U40, U64}, - HashMarker, Output, -}; - -mod c128; -mod c160; -mod c256; -mod c320; - -macro_rules! impl_ripemd { - ( - $name:ident, $wrapped_name:ident, $mod:ident, - $alg_width:expr, $doc_name:expr, $output_size:ty $(,)? - ) => { - #[doc = "Core block-level"] - #[doc = $doc_name] - #[doc = " hasher state."] - #[derive(Clone)] - pub struct $name { - h: [u32; $mod::DIGEST_BUF_LEN], - block_len: u64, - } - - impl HashMarker for $name {} - - impl BlockSizeUser for $name { - type BlockSize = U64; - } - - impl BufferKindUser for $name { - type BufferKind = Eager; - } - - impl OutputSizeUser for $name { - type OutputSize = $output_size; - } - - impl UpdateCore for $name { - #[inline] - fn update_blocks(&mut self, blocks: &[Block]) { - // Assumes that `block_len` does not overflow - self.block_len += blocks.len() as u64; - for block in blocks { - $mod::compress(&mut self.h, block.as_ref()); - } - } - } - - impl FixedOutputCore for $name { - #[inline] - fn finalize_fixed_core(&mut self, buffer: &mut Buffer, out: &mut Output) { - let bs = Self::BlockSize::U64; - let bit_len = 8 * (buffer.get_pos() as u64 + bs * self.block_len); - let mut h = self.h; - buffer.len64_padding_le(bit_len, |block| $mod::compress(&mut h, block.as_ref())); - - for (chunk, v) in out.chunks_exact_mut(4).zip(h.iter()) { - chunk.copy_from_slice(&v.to_le_bytes()); - } - } - } - - impl Default for $name { - #[inline] - fn default() -> Self { - Self { - h: $mod::H0, - block_len: 0, - } - } - } - - impl Reset for $name { - #[inline] - fn reset(&mut self) { - *self = Default::default(); - } - } - - impl AlgorithmName for $name { - #[inline] - fn write_alg_name(f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(concat!("Ripemd", $alg_width)) - } - } - - impl fmt::Debug for $name { - #[inline] - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(concat!("Ripemd", $alg_width, "Core { ... }")) - } - } - - #[doc = $doc_name] - #[doc = " hasher."] - pub type $wrapped_name = CoreWrapper<$name>; - }; -} - -impl_ripemd!(Ripemd128Core, Ripemd128, c128, "128", "RIPEMD-128", U16); -impl_ripemd!(Ripemd160Core, Ripemd160, c160, "160", "RIPEMD-160", U20); -impl_ripemd!(Ripemd256Core, Ripemd256, c256, "256", "RIPEMD-256", U32); -impl_ripemd!(Ripemd320Core, Ripemd320, c320, "320", "RIPEMD-320", U40); - -#[cfg(feature = "oid")] -#[cfg_attr(docsrs, doc(cfg(feature = "oid")))] -impl AssociatedOid for Ripemd128Core { - /// The OID used for the RIPEMD-160. There are two OIDs defined. The Teletrust one (which is - /// used by almost anybody, including BouncyCastle, OpenSSL, GnuTLS, etc. and the ISO one - /// (1.0.10118.3.0.50), which seems to be used by nobody. - const OID: ObjectIdentifier = ObjectIdentifier::new_unwrap("1.3.36.3.2.2"); -} - -#[cfg(feature = "oid")] -#[cfg_attr(docsrs, doc(cfg(feature = "oid")))] -impl AssociatedOid for Ripemd160Core { - /// The OID used for the RIPEMD-160. There are two OIDs defined. The Teletrust one (which is - /// used by almost anybody, including BouncyCastle, OpenSSL, GnuTLS, etc. and the ISO one - /// (1.0.10118.3.0.49), which seems to be used by Go and nobody else. - const OID: ObjectIdentifier = ObjectIdentifier::new_unwrap("1.3.36.3.2.1"); -} - -#[cfg(feature = "oid")] -#[cfg_attr(docsrs, doc(cfg(feature = "oid")))] -impl AssociatedOid for Ripemd256Core { - const OID: ObjectIdentifier = ObjectIdentifier::new_unwrap("1.3.36.3.2.3"); -} diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/tests/data/ripemd128.blb b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/tests/data/ripemd128.blb deleted file mode 100644 index 5df2ef4a7f96e389d7bb6f0ce63715826a90b3c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 510 zcmZQzP&oT3NqAwv9lO(s{1V?bce^nqDzxpZ`ei(q|M>ait8@JUXVf3`h&u{wLdTJFac^xNli=7 z$jr*l$<50zC@d;2DJ?6nsH{@>tF?^%yX=Xt0)?JRn+u!$3P5T>%0W6nnn3zMT0y!& z27t@}83Qs2WEjXikdX=tSFv?o`1MQoj?#;6Phl&z8b>E*7gslT4^J;|A74NJfWV;O zkkGL3h{!11?lCYlGBzllwY2wkd|MekX4#nP^^$&mRh7x0+h~4tg2K< v$xm0XU%9oO)rQr6pStNL3*N2Mh}N78)NH}NYTeQP$7aR$OXDsYMcxDe=l#CN diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/tests/data/ripemd160.blb b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/tests/data/ripemd160.blb deleted file mode 100644 index ee23310ad6ab51220dd3b338c1ab886c6665f808..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmZQzOH4}E=-b5c{Xy)Es@W`FeKU@2X#W_+{igsZkpe`iK$HeV=|GeLM43R81w`3E zlmkS$K$HhW`9M?vM1>kc3xX}Y=J0epVO@};e&@@qTS>3A!$LAr6$(o;ld~0)it@|z z6w>l56tYTl3yKx;%TkLJN`TTiiB**fDf#Id=AVte^=_}edHwB`X;TZ=rpx@iYfZEP d$v^{y6^ia>avC?s?bx=KyZrgKk6x#)0|4S=WQ+g+ diff --git a/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/tests/data/ripemd256.blb b/third_party/rust/chromium_crates_io/vendor/ripemd-0.1.3/tests/data/ripemd256.blb deleted file mode 100644 index 733bc577211cb4f5d9af3447a2619017d3f1ed9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516 zcmZQzaA4Zy;}_p|R-*h*&^2F!$5p!1OMc76G9@>xW6XGbG)R{z(c!1Do$HP8uQ$0S z?%K{Jw~Obu^pg!0HnYy3?Xa3?lBuc6mY9_6uzqizQuo}R-RHiZ(q(>jdm-0>J+-Hw zWbny3U3yvSIy+S+H?_DpF+EiwB{My>xWu9TWnt+onI~0&zA+PhEOjPG96yqM&?Pn0 z>(Bj=rR+R>CO|_|Qq$5iGPAOCa`W;F3X6(MO3TVCDytk)<{Frk$}JKr&;Gfv>rCUG zifMvffzzk8H{F%LS=$?ETmaGw(hf2KWC+L{kWnDhKn8-$1Q`o58Du!fe2^6m7S1f8 z&8v=`IB`>`wfOnUhFQP0_)X3n&Rh9hU+kM%pM8y^le3Gfo4bdnm$#3vpMOALP;f|S zSa?Ka6mIt#7#bOyn3|beSUQ9|Ea6xqwq0R|i^{smGP~s;Cttj<-$DH2iurZR?v*dt w(VzfVi_k?8%Yp6hnJR~=9;klyr8(jlthk#OCTMQ8UFbI+&|@ippP>Y_Y(^19dQP5*V+@9v+sbITlt z0HtfOVTr*xcS;Zb{d(+Pwd2lD#j3B5$+d=y*A_(aooEo1u`*h~F>?n~V!*kIRyK>D zY7tA9wsMwMPRhNNRuwK5rt|09@8|W&A^I~nxU*iH&ig->EioxM;GPfTW>)`BgXMEM z*A@3oGLVZB=ZJp)_u!6;Vuf}kKlE2RUGuqpBtuswH?_DpF+EiwB{My>xFo=;Pa{C@ zO01K9MvMR4%VN)Wwi^Gk*P3`~e#;fr6TR7f|BGtBWz{fFHvw9blA4yDk(rg9lbe@c zP*_x4Qd(ACQCSsmYVXEI?n&-k3X@l5pJSb>qhZqX#r_+Ibs^FT&|Oa&PXG8<$($Oe!lAbUVo1za#$K9%RY5|i|j9lqZ)m)=uI zcoccxXZDsQYCU|DqxX~)tjs)lp=jZn8b>E*7gslT4^J;|A74NJfWV;OkkGL3h{!11 z?l&+rGBz", "Steven Fackler ", @@ -31,12 +31,12 @@ license = "MIT/Apache-2.0" repository = "https://github.com/ipld/serde_ipld_dagcbor" [dependencies.cbor4ii] -version = "0.2.13" +version = "0.2.14" features = ["use_alloc"] default-features = false [dependencies.cid] -version = "0.8.0" +version = "0.10.1" features = ["serde-codec"] default-features = false @@ -44,26 +44,25 @@ default-features = false version = "1.1.0" [dependencies.serde] -version = "1.0.14" +version = "1.0.164" features = ["alloc"] default-features = false [dev-dependencies.libipld-core] -version = "0.13.1" +version = "0.16.0" features = ["serde-codec"] default-features = false [dev-dependencies.serde_bytes] -version = "0.11.5" +version = "0.11.9" features = ["alloc"] default-features = false [dev-dependencies.serde_derive] -version = "1.0.14" +version = "1.0.164" default-features = false [features] -_do_not_use_its_unsafe_and_invalid_cbor = ["std"] default = ["std"] std = [ "cbor4ii/use_std", diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/Cargo.toml.orig similarity index 57% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/Cargo.toml.orig index d509596bc238..3682cb894598 100644 --- a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/Cargo.toml.orig @@ -1,6 +1,6 @@ [package] name = "serde_ipld_dagcbor" -version = "0.2.2" +version = "0.4.2" authors = [ "Pyfisch ", "Steven Fackler ", @@ -15,17 +15,16 @@ categories = ["encoding"] edition = "2018" [dependencies] -cbor4ii = { version = "0.2.13", default-features = false, features = ["use_alloc"] } -cid = { version = "0.8.0", default-features = false, features = ["serde-codec"] } +cbor4ii = { version = "0.2.14", default-features = false, features = ["use_alloc"] } +cid = { version = "0.10.1", default-features = false, features = ["serde-codec"] } scopeguard = "1.1.0" -serde = { version = "1.0.14", default-features = false, features = ["alloc"] } +serde = { version = "1.0.164", default-features = false, features = ["alloc"] } [dev-dependencies] -serde_derive = { version = "1.0.14", default-features = false } -libipld-core = { version = "0.13.1", default-features = false, features = ["serde-codec"] } -serde_bytes = { version = "0.11.5", default-features = false, features = ["alloc"]} +serde_derive = { version = "1.0.164", default-features = false } +libipld-core = { version = "0.16.0", default-features = false, features = ["serde-codec"] } +serde_bytes = { version = "0.11.9", default-features = false, features = ["alloc"]} [features] default = ["std"] std = ["cbor4ii/use_std", "cid/std", "serde/std", "serde_bytes/std"] -_do_not_use_its_unsafe_and_invalid_cbor = ["std"] diff --git a/third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/LICENSE-APACHE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/num-derive-0.3.3/LICENSE-APACHE rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/LICENSE-APACHE diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/LICENSE-MIT similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/LICENSE-MIT rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/LICENSE-MIT diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/README.md b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/README.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/README.md rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/README.md diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/examples/readme.rs b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/examples/readme.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/examples/readme.rs rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/examples/readme.rs diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/examples/tux.cbor b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/examples/tux.cbor similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/examples/tux.cbor rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/examples/tux.cbor diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/src/cbor4ii_nonpub.rs b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/src/cbor4ii_nonpub.rs similarity index 94% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/src/cbor4ii_nonpub.rs rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/src/cbor4ii_nonpub.rs index 0d654ad1bac8..3176ef371824 100644 --- a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/src/cbor4ii_nonpub.rs +++ b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/src/cbor4ii_nonpub.rs @@ -28,7 +28,7 @@ pub(crate) fn peek_one<'a, R: dec::Read<'a>>(reader: &mut R) -> Result buf, dec::Reference::Short(buf) => buf, }; - let byte = buf.get(0).copied().ok_or(DecodeError::Eof)?; + let byte = buf.first().copied().ok_or(DecodeError::Eof)?; Ok(byte) } diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/src/de.rs b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/src/de.rs similarity index 91% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/src/de.rs rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/src/de.rs index 827448786636..330a8c2f75c2 100644 --- a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/src/de.rs +++ b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/src/de.rs @@ -1,7 +1,7 @@ //! Deserialization. #[cfg(not(feature = "std"))] use alloc::borrow::Cow; -use core::convert::Infallible; +use core::convert::{Infallible, TryFrom}; #[cfg(feature = "std")] use std::borrow::Cow; @@ -164,9 +164,20 @@ impl<'de, 'a, R: dec::Read<'de>> serde::Deserializer<'de> for &'a mut Deserializ let de = &mut *de; let byte = peek_one(&mut de.reader)?; + if is_indefinite(byte) { + return Err(DecodeError::IndefiniteSize); + } match dec::if_major(byte) { major::UNSIGNED => de.deserialize_u64(visitor), - major::NEGATIVE => de.deserialize_i64(visitor), + major::NEGATIVE => { + // CBOR supports negative integers up to -2^64 which is less than i64::MIN. Only + // treat it as i128, if it is outside the i64 range. + let value = i128::decode(&mut de.reader)?; + match i64::try_from(value) { + Ok(value_i64) => visitor.visit_i64(value_i64), + Err(_) => visitor.visit_i128(value), + } + } major::BYTES => de.deserialize_byte_buf(visitor), major::STRING => de.deserialize_string(visitor), major::ARRAY => de.deserialize_seq(visitor), @@ -182,7 +193,7 @@ impl<'de, 'a, R: dec::Read<'de>> serde::Deserializer<'de> for &'a mut Deserializ de.reader.advance(1); visitor.visit_bool(true) } - marker::NULL | marker::UNDEFINED => { + marker::NULL => { de.reader.advance(1); visitor.visit_none() } @@ -248,22 +259,10 @@ impl<'de, 'a, R: dec::Read<'de>> serde::Deserializer<'de> for &'a mut Deserializ where V: Visitor<'de>, { - #[cfg(not(feature = "_do_not_use_its_unsafe_and_invalid_cbor"))] match >::decode(&mut self.reader)? { Cow::Borrowed(buf) => visitor.visit_borrowed_str(buf), Cow::Owned(buf) => visitor.visit_string(buf), } - - // Don't use this. This can lead to random panics and invalid CBOR. - #[cfg(feature = "_do_not_use_its_unsafe_and_invalid_cbor")] - match types::BadStr::>::decode(&mut self.reader)? { - types::BadStr(Cow::Borrowed(buf)) => { - visitor.visit_borrowed_str(unsafe { std::str::from_utf8_unchecked(buf) }) - } - types::BadStr(Cow::Owned(buf)) => { - visitor.visit_string(unsafe { String::from_utf8_unchecked(buf) }) - } - } } #[inline] @@ -280,7 +279,7 @@ impl<'de, 'a, R: dec::Read<'de>> serde::Deserializer<'de> for &'a mut Deserializ V: Visitor<'de>, { let byte = peek_one(&mut self.reader)?; - if byte != marker::NULL && byte != marker::UNDEFINED { + if byte != marker::NULL { let mut de = self.try_step()?; visitor.visit_some(&mut **de) } else { @@ -426,17 +425,17 @@ impl<'de, 'a, R: dec::Read<'de>> serde::Deserializer<'de> for &'a mut Deserializ struct Accessor<'a, R> { de: &'a mut Deserializer, - len: Option, + len: usize, } impl<'de, 'a, R: dec::Read<'de>> Accessor<'a, R> { #[inline] pub fn array(de: &'a mut Deserializer) -> Result, DecodeError> { let array_start = dec::ArrayStart::decode(&mut de.reader)?; - Ok(Accessor { - de, - len: array_start.0, - }) + array_start.0.map_or_else( + || Err(DecodeError::IndefiniteSize), + move |len| Ok(Accessor { de, len }), + ) } #[inline] @@ -447,10 +446,7 @@ impl<'de, 'a, R: dec::Read<'de>> Accessor<'a, R> { let array_start = dec::ArrayStart::decode(&mut de.reader)?; if array_start.0 == Some(len) { - Ok(Accessor { - de, - len: array_start.0, - }) + Ok(Accessor { de, len }) } else { Err(DecodeError::RequireLength { name: "tuple", @@ -463,10 +459,10 @@ impl<'de, 'a, R: dec::Read<'de>> Accessor<'a, R> { #[inline] pub fn map(de: &'a mut Deserializer) -> Result, DecodeError> { let map_start = dec::MapStart::decode(&mut de.reader)?; - Ok(Accessor { - de, - len: map_start.0, - }) + map_start.0.map_or_else( + || Err(DecodeError::IndefiniteSize), + move |len| Ok(Accessor { de, len }), + ) } } @@ -481,24 +477,17 @@ where where T: de::DeserializeSeed<'de>, { - if let Some(len) = self.len.as_mut() { - if *len > 0 { - *len -= 1; - Ok(Some(seed.deserialize(&mut *self.de)?)) - } else { - Ok(None) - } - } else if peek_one(&mut self.de.reader)? != marker::BREAK { + if self.len > 0 { + self.len -= 1; Ok(Some(seed.deserialize(&mut *self.de)?)) } else { - self.de.reader.advance(1); Ok(None) } } #[inline] fn size_hint(&self) -> Option { - self.len + Some(self.len) } } @@ -510,17 +499,10 @@ impl<'de, 'a, R: dec::Read<'de>> de::MapAccess<'de> for Accessor<'a, R> { where K: de::DeserializeSeed<'de>, { - if let Some(len) = self.len.as_mut() { - if *len > 0 { - *len -= 1; - Ok(Some(seed.deserialize(&mut *self.de)?)) - } else { - Ok(None) - } - } else if peek_one(&mut self.de.reader)? != marker::BREAK { + if self.len > 0 { + self.len -= 1; Ok(Some(seed.deserialize(&mut *self.de)?)) } else { - self.de.reader.advance(1); Ok(None) } } @@ -535,7 +517,7 @@ impl<'de, 'a, R: dec::Read<'de>> de::MapAccess<'de> for Accessor<'a, R> { #[inline] fn size_hint(&self) -> Option { - self.len + Some(self.len) } } @@ -691,3 +673,9 @@ impl<'de, 'a, R: dec::Read<'de>> de::Deserializer<'de> for &'a mut CidDeserializ string struct tuple tuple_struct u8 u16 u32 u64 unit unit_struct } } + +/// Check if byte is a major type with indefinite length. +#[inline] +pub fn is_indefinite(byte: u8) -> bool { + byte & marker::START == marker::START +} diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/src/error.rs b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/src/error.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/src/error.rs rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/src/error.rs index 28ef3e42c4ed..d6a1d9f20b42 100644 --- a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/src/error.rs +++ b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/src/error.rs @@ -121,6 +121,8 @@ pub enum DecodeError { DepthLimit, /// Trailing data. TrailingData, + /// Indefinite sized item was encountered. + IndefiniteSize, } impl From for DecodeError { diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/src/lib.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/src/lib.rs diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/src/ser.rs b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/src/ser.rs similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/src/ser.rs rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/src/ser.rs index deaa9901aead..cf201ffec93f 100644 --- a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/src/ser.rs +++ b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/src/ser.rs @@ -302,12 +302,23 @@ impl<'a, W: enc::Write> serde::Serializer for &'a mut Serializer { #[inline] fn serialize_i128(self, v: i128) -> Result { + if !(u64::MAX as i128 >= v && -(u64::MAX as i128 + 1) <= v) { + return Err(EncodeError::Msg( + "Integer must be within [-u64::MAX-1, u64::MAX] range".into(), + )); + } + v.encode(&mut self.writer)?; Ok(()) } #[inline] fn serialize_u128(self, v: u128) -> Result { + if (u64::MAX as u128) < v { + return Err(EncodeError::Msg( + "Unsigned integer must be within [0, u64::MAX] range".into(), + )); + } v.encode(&mut self.writer)?; Ok(()) } diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/cid.rs b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/cid.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/cid.rs rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/cid.rs diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/crash.cbor b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/crash.cbor similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/crash.cbor rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/crash.cbor diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/de.rs b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/de.rs similarity index 87% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/de.rs rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/de.rs index 2feda7f12fc2..ef49b7cdbf44 100644 --- a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/de.rs +++ b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/de.rs @@ -52,6 +52,15 @@ fn test_numbers3() { assert_eq!(ipld.unwrap(), Ipld::Integer(-2015)); } +#[test] +fn test_numbers_large_negative() { + let ipld: Result = + de::from_slice(&[0x3b, 0xa5, 0xf7, 0x02, 0xb3, 0xa5, 0xf7, 0x02, 0xb3]); + let expected: i128 = -11959030306112471732; + assert!(expected < i128::from(i64::MIN)); + assert_eq!(ipld.unwrap(), Ipld::Integer(expected)); +} + #[test] fn test_bool() { let ipld: Result = de::from_slice(b"\xf4"); @@ -98,7 +107,7 @@ fn test_object() { } #[test] -fn test_indefinite_object() { +fn test_indefinite_object_error() { let ipld: Result = de::from_slice(b"\xbfaa\x01ab\x9f\x02\x03\xff\xff"); let mut object = BTreeMap::new(); object.insert("a".to_string(), Ipld::Integer(1)); @@ -106,45 +115,33 @@ fn test_indefinite_object() { "b".to_string(), Ipld::List(vec![Ipld::Integer(2), Ipld::Integer(3)]), ); - assert_eq!(ipld.unwrap(), Ipld::Map(object)); + assert!(matches!(ipld.unwrap_err(), DecodeError::IndefiniteSize)); } #[test] -fn test_indefinite_list() { +fn test_indefinite_list_error() { let ipld: Result = de::from_slice(b"\x9f\x01\x02\x03\xff"); - assert_eq!( - ipld.unwrap(), - Ipld::List(vec![Ipld::Integer(1), Ipld::Integer(2), Ipld::Integer(3)]) - ); + assert!(matches!(ipld.unwrap_err(), DecodeError::IndefiniteSize)); } #[test] -fn test_indefinite_string() { +fn test_indefinite_string_error() { let ipld: Result = de::from_slice(b"\x7f\x65Mary \x64Had \x62a \x67Little \x60\x64Lamb\xff"); - assert_eq!( - ipld.unwrap(), - Ipld::String("Mary Had a Little Lamb".to_string()) - ); + assert!(matches!(ipld.unwrap_err(), DecodeError::IndefiniteSize)); } #[test] -fn test_indefinite_byte_string() { +fn test_indefinite_byte_string_error() { let ipld: Result = de::from_slice(b"\x5f\x42\x01\x23\x42\x45\x67\xff"); - assert_eq!(ipld.unwrap(), Ipld::Bytes(b"\x01#Eg".to_vec())); + assert!(matches!(ipld.unwrap_err(), DecodeError::IndefiniteSize)); } #[test] -fn test_multiple_indefinite_strings() { +fn test_multiple_indefinite_strings_error() { let input = b"\x82\x7f\x65Mary \x64Had \x62a \x67Little \x60\x64Lamb\xff\x5f\x42\x01\x23\x42\x45\x67\xff"; let ipld: Result = de::from_slice(input); - assert_eq!( - ipld.unwrap(), - Ipld::List(vec![ - Ipld::String("Mary Had a Little Lamb".to_string()), - Ipld::Bytes(b"\x01#Eg".to_vec()) - ]) - ); + assert!(matches!(ipld.unwrap_err(), DecodeError::IndefiniteSize)); } #[test] @@ -225,6 +222,7 @@ fn test_option_none_roundtrip() { #[test] fn test_unit() { + #[allow(clippy::let_unit_value)] let unit = (); let v = to_vec(&unit).unwrap(); assert_eq!(v, [0xf6], "unit is serialized as NULL."); @@ -233,12 +231,10 @@ fn test_unit() { } #[test] -fn test_variable_length_map() { +fn test_variable_length_map_error() { let slice = b"\xbf\x67\x6d\x65\x73\x73\x61\x67\x65\x64\x70\x6f\x6e\x67\xff"; - let ipld: Ipld = de::from_slice(slice).unwrap(); - let mut map = BTreeMap::new(); - map.insert("message".to_string(), Ipld::String("pong".to_string())); - assert_eq!(ipld, Ipld::Map(map)) + let ipld: Result = de::from_slice(slice); + assert!(matches!(ipld.unwrap_err(), DecodeError::IndefiniteSize)); } #[test] @@ -308,10 +304,13 @@ fn invalid_string() { )); } -#[cfg(feature = "_do_not_use_its_unsafe_and_invalid_cbor")] #[test] -fn do_not_use_its_unsafe_and_invalid_cbor_test() { - let input = [0x63, 0xc5, 0x01, 0x02]; +fn error_on_undefined() { + // CBOR smple type `undefined` + let input = [0xf7]; let result = serde_ipld_dagcbor::from_slice::(&input); - assert!(result.is_ok()) + assert!(matches!( + result.unwrap_err(), + DecodeError::Unsupported { .. } + )); } diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/enum.rs b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/enum.rs similarity index 90% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/enum.rs rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/enum.rs index ff131b6394e9..3c5c8505d61b 100644 --- a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/enum.rs +++ b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/enum.rs @@ -1,6 +1,6 @@ use serde::{Deserialize, Serialize}; -use serde_ipld_dagcbor::{from_slice, to_vec}; +use serde_ipld_dagcbor::{from_slice, to_vec, DecodeError}; #[derive(Debug, Serialize, Deserialize, PartialEq, Eq)] enum Enum { @@ -80,10 +80,10 @@ enum Foo { } #[test] -fn test_variable_length_array() { +fn test_variable_length_array_error() { let slice = b"\x9F\x67\x72\x65\x71\x75\x69\x72\x65\xFF"; - let value: Vec = from_slice(slice).unwrap(); - assert_eq!(value, [Foo::Require]); + let value: Result, _> = from_slice(slice); + assert!(matches!(value.unwrap_err(), DecodeError::IndefiniteSize)); } #[derive(Serialize, Deserialize, PartialEq, Debug)] diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/ipld.rs b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/ipld.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/ipld.rs rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/ipld.rs diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/kietaub.cbor b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/kietaub.cbor similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/kietaub.cbor rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/kietaub.cbor diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/ser.rs b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/ser.rs similarity index 83% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/ser.rs rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/ser.rs index 9aef211e1b9c..154b87d6a01a 100644 --- a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/ser.rs +++ b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/ser.rs @@ -74,6 +74,22 @@ fn test_integer() { // u64 let vec = to_vec(&::std::u64::MAX).unwrap(); assert_eq!(vec, b"\x1b\xff\xff\xff\xff\xff\xff\xff\xff"); + // u128 within u64 range + let vec = to_vec(&(u64::MAX as u128)).unwrap(); + assert_eq!(vec, b"\x1b\xff\xff\xff\xff\xff\xff\xff\xff"); + // u128 out of range + assert!(to_vec(&(u64::MAX as u128 + 1)).is_err()); + // i128 within u64 range + let vec = to_vec(&(u64::MAX as i128)).unwrap(); + assert_eq!(vec, b"\x1b\xff\xff\xff\xff\xff\xff\xff\xff"); + // i128 within -u64 range + let vec = to_vec(&(-(u64::MAX as i128))).unwrap(); + assert_eq!(vec, b"\x3B\xff\xff\xff\xff\xff\xff\xff\xfe"); + // minimum CBOR integer value + let vec = to_vec(&(-(u64::MAX as i128 + 1))).unwrap(); + assert_eq!(vec, b"\x3B\xff\xff\xff\xff\xff\xff\xff\xff"); + // i128 out of -u64 range + assert!(to_vec(&i128::MIN).is_err()); } #[test] diff --git a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/std_types.rs b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/std_types.rs similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/std_types.rs rename to third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/std_types.rs index efb48c11b467..08e1793487b4 100644 --- a/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.2.2/tests/std_types.rs +++ b/third_party/rust/chromium_crates_io/vendor/serde_ipld_dagcbor-0.4.2/tests/std_types.rs @@ -142,10 +142,4 @@ testcase!( "a165416c706861821a00039447183c" ); testcase!(test_i128_a, i128, -1i128, "20"); -testcase!( - test_i128_b, - i128, - -18446744073709551616i128, - "3BFFFFFFFFFFFFFFFF" -); testcase!(test_u128, u128, 17, "11"); diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/.cargo-checksum.json deleted file mode 100644 index 697c9ce2fbb4..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/.cargo-checksum.json +++ /dev/null @@ -1 +0,0 @@ -{"files":{}} diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/.cargo_vcs_info.json deleted file mode 100644 index f65803a3d526..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "db5af59cd44e8c148f21888f3775adb4e4ff84ff" - }, - "path_in_vcs": "sha3" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/CHANGELOG.md b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/CHANGELOG.md deleted file mode 100644 index 3f2e009fe3f8..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/CHANGELOG.md +++ /dev/null @@ -1,86 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## 0.10.3 (2022-09-02) -### Fixed -- MSRV issue caused by publishing v0.10.2 using a buggy Nightly toolchain ([#399]) - -[#399]: https://github.com/RustCrypto/hashes/pull/399 - -## 0.10.2 (2022-07-30) -### Added -- cSHAKE128 and cSHAKE256 implementations ([#355]) - -[#355]: https://github.com/RustCrypto/hashes/pull/355 - -## 0.10.1 (2022-02-17) -### Fixed -- Minimal versions build ([#363]) - -[#363]: https://github.com/RustCrypto/hashes/pull/363 - -## 0.10.0 (2021-12-07) -### Changed -- Update to `digest` v0.10 ([#217]) - -[#217]: https://github.com/RustCrypto/hashes/pull/217 - -## 0.9.1 (2020-06-28) -### Changed -- Update to `block-buffer` v0.9 ([#164]) -- Update to `opaque-debug` v0.3 ([#168]) - -[#164]: https://github.com/RustCrypto/hashes/pull/164 -[#168]: https://github.com/RustCrypto/hashes/pull/168 - -## 0.9.0 (2020-06-10) -### Changed -- Update to `digest` v0.9 release; MSRV 1.41+ ([#155]) -- Use new `*Dirty` traits from the `digest` crate ([#153]) -- Bump `block-buffer` to v0.8 release ([#151]) -- Rename `*result*` to `finalize` ([#148]) -- Upgrade to Rust 2018 edition ([#134]) - -[#155]: https://github.com/RustCrypto/hashes/pull/155 -[#153]: https://github.com/RustCrypto/hashes/pull/153 -[#151]: https://github.com/RustCrypto/hashes/pull/151 -[#148]: https://github.com/RustCrypto/hashes/pull/148 -[#134]: https://github.com/RustCrypto/hashes/pull/133 - -## 0.8.2 (2019-04-24) - -## 0.8.1 (2018-11-14) - -## 0.8.0 (2018-10-02) - -## 0.7.3 (2018-03-27) - -## 0.7.2 (2017-11-18) - -## 0.7.1 (2017-11-17) - -## 0.7.0 (2017-11-15) - -## 0.6.0 (2017-06-12) - -## 0.5.3 (2017-05-31) - -## 0.5.2 (2017-05-30) - -## 0.5.1 (2017-05-02) - -## 0.5.0 (2017-04-06) - -## 0.4.1 (2017-01-20) - -## 0.4.0 (2016-12-25) - -## 0.3.0 (2016-11-17) - -## 0.2.0 (2016-10-14) - -## 0.1.0 (2016-10-13) diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/Cargo.toml deleted file mode 100644 index a2941137fa4f..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/Cargo.toml +++ /dev/null @@ -1,51 +0,0 @@ -# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO -# -# When uploading crates to the registry Cargo will automatically -# "normalize" Cargo.toml files for maximal compatibility -# with all versions of Cargo and also rewrite `path` dependencies -# to registry (e.g., crates.io) dependencies. -# -# If you are reading this file be aware that the original Cargo.toml -# will likely look very different (and much more reasonable). -# See Cargo.toml.orig for the original contents. - -[package] -edition = "2018" -name = "sha3" -version = "0.10.3" -authors = ["RustCrypto Developers"] -description = "SHA-3 (Keccak) hash function" -documentation = "https://docs.rs/sha3" -readme = "README.md" -keywords = [ - "crypto", - "sha3", - "keccak", - "hash", - "digest", -] -categories = [ - "cryptography", - "no-std", -] -license = "MIT OR Apache-2.0" -repository = "https://github.com/RustCrypto/hashes" -resolver = "2" - -[dependencies.digest] -version = "0.10.3" - -[dependencies.keccak] -version = "0.1" - -[dev-dependencies.digest] -version = "0.10.3" -features = ["dev"] - -[dev-dependencies.hex-literal] -version = "0.2.2" - -[features] -default = ["std"] -reset = [] -std = ["digest/std"] diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/Cargo.toml.orig deleted file mode 100644 index 71f5f4ebed97..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/Cargo.toml.orig +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "sha3" -version = "0.10.3" -description = "SHA-3 (Keccak) hash function" -authors = ["RustCrypto Developers"] -license = "MIT OR Apache-2.0" -readme = "README.md" -edition = "2018" -documentation = "https://docs.rs/sha3" -repository = "https://github.com/RustCrypto/hashes" -keywords = ["crypto", "sha3", "keccak", "hash", "digest"] -categories = ["cryptography", "no-std"] - -[dependencies] -digest = "0.10.3" -keccak = "0.1" - -[dev-dependencies] -digest = { version = "0.10.3", features = ["dev"] } -hex-literal = "0.2.2" - -[features] -default = ["std"] -std = ["digest/std"] -reset = [] # Enable reset functionality diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/LICENSE-APACHE deleted file mode 100644 index 78173fa2e753..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/LICENSE-APACHE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/LICENSE-MIT deleted file mode 100644 index 5ccb25e50cff..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/LICENSE-MIT +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2006-2009 Graydon Hoare -Copyright (c) 2009-2013 Mozilla Foundation -Copyright (c) 2014 Sébastien Martini -Copyright (c) 2016-2017 Artyom Pavlov, Marek Kotewicz - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/README.md b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/README.md deleted file mode 100644 index caef5d594e6b..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/README.md +++ /dev/null @@ -1,56 +0,0 @@ -# RustCrypto: SHA-3 - -[![crate][crate-image]][crate-link] -[![Docs][docs-image]][docs-link] -![Apache2/MIT licensed][license-image] -![Rust Version][rustc-image] -[![Project Chat][chat-image]][chat-link] -[![Build Status][build-image]][build-link] - -Pure Rust implementation of the [SHA-3 (Keccak) hash function][1]. - -[Documentation][docs-link] - -## Minimum Supported Rust Version - -Rust **1.41** or higher. - -Minimum supported Rust version can be changed in the future, but it will be -done with a minor version bump. - -## SemVer Policy - -- All on-by-default features of this library are covered by SemVer -- MSRV is considered exempt from SemVer as noted above - -## License - -Licensed under either of: - - * [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) - * [MIT license](http://opensource.org/licenses/MIT) - -at your option. - -### Contribution - -Unless you explicitly state otherwise, any contribution intentionally submitted -for inclusion in the work by you, as defined in the Apache-2.0 license, shall be -dual licensed as above, without any additional terms or conditions. - -[//]: # (badges) - -[crate-image]: https://img.shields.io/crates/v/sha3.svg -[crate-link]: https://crates.io/crates/sha3 -[docs-image]: https://docs.rs/sha3/badge.svg -[docs-link]: https://docs.rs/sha3/ -[license-image]: https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg -[rustc-image]: https://img.shields.io/badge/rustc-1.41+-blue.svg -[chat-image]: https://img.shields.io/badge/zulip-join_chat-blue.svg -[chat-link]: https://rustcrypto.zulipchat.com/#narrow/stream/260041-hashes -[build-image]: https://github.com/RustCrypto/hashes/workflows/sha3/badge.svg?branch=master -[build-link]: https://github.com/RustCrypto/hashes/actions?query=workflow%3Asha3 - -[//]: # (general links) - -[1]: https://en.wikipedia.org/wiki/SHA-3 diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/benches/mod.rs b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/benches/mod.rs deleted file mode 100644 index db2940516936..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/benches/mod.rs +++ /dev/null @@ -1,54 +0,0 @@ -#![feature(test)] -extern crate test; - -use digest::bench_update; -use sha3::{Sha3_224, Sha3_256, Sha3_384, Sha3_512, Shake128, Shake256}; -use test::Bencher; - -bench_update!( - Sha3_224::default(); - sha3_224_10 10; - sha3_224_100 100; - sha3_224_1000 1000; - sha3_224_10000 10000; -); - -bench_update!( - Sha3_256::default(); - sha3_256_10 10; - sha3_265_100 100; - sha3_256_1000 1000; - sha3_256_10000 10000; -); - -bench_update!( - Sha3_384::default(); - sha3_384_10 10; - sha3_384_100 100; - sha3_384_1000 1000; - sha3_384_10000 10000; -); - -bench_update!( - Sha3_512::default(); - sha3_512_10 10; - sha3_512_100 100; - sha3_512_1000 1000; - sha3_512_10000 10000; -); - -bench_update!( - Shake128::default(); - shake128_10 10; - shake128_100 100; - shake128_1000 1000; - shake128_10000 10000; -); - -bench_update!( - Shake256::default(); - shake256_10 10; - shake256_100 100; - shake256_1000 1000; - shake256_10000 10000; -); diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/src/lib.rs deleted file mode 100644 index 5e4884f3cb78..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/src/lib.rs +++ /dev/null @@ -1,159 +0,0 @@ -//! An implementation of the [SHA-3][1] cryptographic hash algorithms. -//! -//! There are 6 standard algorithms specified in the SHA-3 standard: -//! -//! * `SHA3-224` -//! * `SHA3-256` -//! * `SHA3-384` -//! * `SHA3-512` -//! * `SHAKE128`, an extendable output function (XOF) -//! * `SHAKE256`, an extendable output function (XOF) -//! * `Keccak224`, `Keccak256`, `Keccak384`, `Keccak512` (NIST submission -//! without padding changes) -//! -//! # Examples -//! -//! Output size of SHA3-256 is fixed, so its functionality is usually -//! accessed via the `Digest` trait: -//! -//! ``` -//! use hex_literal::hex; -//! use sha3::{Digest, Sha3_256}; -//! -//! // create a SHA3-256 object -//! let mut hasher = Sha3_256::new(); -//! -//! // write input message -//! hasher.update(b"abc"); -//! -//! // read hash digest -//! let result = hasher.finalize(); -//! -//! assert_eq!(result[..], hex!(" -//! 3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532 -//! ")[..]); -//! ``` -//! -//! SHAKE functions have an extendable output, so finalization method returns -//! XOF reader from which results of arbitrary length can be read. Note that -//! these functions do not implement `Digest`, so lower-level traits have to -//! be imported: -//! -//! ``` -//! use sha3::{Shake128, digest::{Update, ExtendableOutput, XofReader}}; -//! use hex_literal::hex; -//! -//! let mut hasher = Shake128::default(); -//! hasher.update(b"abc"); -//! let mut reader = hasher.finalize_xof(); -//! let mut res1 = [0u8; 10]; -//! reader.read(&mut res1); -//! assert_eq!(res1, hex!("5881092dd818bf5cf8a3")); -//! ``` -//! -//! Also see [RustCrypto/hashes][2] readme. -//! -//! [1]: https://en.wikipedia.org/wiki/SHA-3 -//! [2]: https://github.com/RustCrypto/hashes - -#![no_std] -#![doc( - html_logo_url = "https://raw.githubusercontent.com/RustCrypto/media/6ee8e381/logo.svg", - html_favicon_url = "https://raw.githubusercontent.com/RustCrypto/media/6ee8e381/logo.svg" -)] -#![forbid(unsafe_code)] -#![warn(missing_docs, rust_2018_idioms)] - -pub use digest::{self, Digest}; - -use core::fmt; -use digest::{ - block_buffer::Eager, - consts::{U104, U136, U144, U168, U200, U28, U32, U48, U64, U72}, - core_api::{ - AlgorithmName, Block, BlockSizeUser, Buffer, BufferKindUser, CoreWrapper, - ExtendableOutputCore, FixedOutputCore, OutputSizeUser, Reset, UpdateCore, XofReaderCore, - XofReaderCoreWrapper, - }, - generic_array::typenum::Unsigned, - HashMarker, Output, -}; - -#[macro_use] -mod macros; -mod state; - -use crate::state::Sha3State; - -// Paddings -const KECCAK: u8 = 0x01; -const SHA3: u8 = 0x06; -const SHAKE: u8 = 0x1f; -const CSHAKE: u8 = 0x4; - -impl_sha3!(Keccak224Core, Keccak224, U28, U144, KECCAK, "Keccak-224"); -impl_sha3!(Keccak256Core, Keccak256, U32, U136, KECCAK, "Keccak-256"); -impl_sha3!(Keccak384Core, Keccak384, U48, U104, KECCAK, "Keccak-384"); -impl_sha3!(Keccak512Core, Keccak512, U64, U72, KECCAK, "Keccak-512"); - -impl_sha3!( - Keccak256FullCore, - Keccak256Full, - U200, - U136, - KECCAK, - "SHA-3 CryptoNight variant", -); - -impl_sha3!(Sha3_224Core, Sha3_224, U28, U144, SHA3, "SHA-3-224"); -impl_sha3!(Sha3_256Core, Sha3_256, U32, U136, SHA3, "SHA-3-256"); -impl_sha3!(Sha3_384Core, Sha3_384, U48, U104, SHA3, "SHA-3-384"); -impl_sha3!(Sha3_512Core, Sha3_512, U64, U72, SHA3, "SHA-3-512"); - -impl_shake!( - Shake128Core, - Shake128, - Shake128ReaderCore, - Shake128Reader, - U168, - SHAKE, - "SHAKE128", -); -impl_shake!( - Shake256Core, - Shake256, - Shake256ReaderCore, - Shake256Reader, - U136, - SHAKE, - "SHAKE256", -); - -impl_cshake!( - CShake128Core, - CShake128, - CShake128ReaderCore, - CShake128Reader, - U168, - SHAKE, - CSHAKE, - "CSHAKE128", -); -impl_cshake!( - CShake256Core, - CShake256, - CShake256ReaderCore, - CShake256Reader, - U136, - SHAKE, - CSHAKE, - "CSHAKE256", -); - -#[inline(always)] -pub(crate) fn left_encode(val: u64, b: &mut [u8; 9]) -> &[u8] { - b[1..].copy_from_slice(&val.to_be_bytes()); - let i = b[1..8].iter().take_while(|&&a| a == 0).count(); - b[i] = (8 - i) as u8; - &b[i..] -} diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/src/macros.rs b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/src/macros.rs deleted file mode 100644 index ab27ffda3749..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/src/macros.rs +++ /dev/null @@ -1,368 +0,0 @@ -macro_rules! impl_sha3 { - ( - $name:ident, $full_name:ident, $output_size:ident, - $rate:ident, $pad:expr, $alg_name:expr $(,)? - ) => { - #[doc = "Core "] - #[doc = $alg_name] - #[doc = " hasher state."] - #[derive(Clone)] - #[allow(non_camel_case_types)] - pub struct $name { - state: Sha3State, - } - - impl HashMarker for $name {} - - impl BlockSizeUser for $name { - type BlockSize = $rate; - } - - impl BufferKindUser for $name { - type BufferKind = Eager; - } - - impl OutputSizeUser for $name { - type OutputSize = $output_size; - } - - impl UpdateCore for $name { - #[inline] - fn update_blocks(&mut self, blocks: &[Block]) { - for block in blocks { - self.state.absorb_block(block) - } - } - } - - impl FixedOutputCore for $name { - #[inline] - fn finalize_fixed_core(&mut self, buffer: &mut Buffer, out: &mut Output) { - let pos = buffer.get_pos(); - let block = buffer.pad_with_zeros(); - block[pos] = $pad; - let n = block.len(); - block[n - 1] |= 0x80; - - self.state.absorb_block(block); - - self.state.as_bytes(out); - } - } - - impl Default for $name { - #[inline] - fn default() -> Self { - Self { - state: Default::default(), - } - } - } - - impl Reset for $name { - #[inline] - fn reset(&mut self) { - *self = Default::default(); - } - } - - impl AlgorithmName for $name { - fn write_alg_name(f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(stringify!($full_name)) - } - } - - impl fmt::Debug for $name { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(concat!(stringify!($name), " { ... }")) - } - } - - #[doc = $alg_name] - #[doc = " hasher state."] - pub type $full_name = CoreWrapper<$name>; - }; -} - -macro_rules! impl_shake { - ( - $name:ident, $full_name:ident, $reader:ident, $reader_full:ident, - $rate:ident, $pad:expr, $alg_name:expr, - ) => { - #[doc = "Core "] - #[doc = $alg_name] - #[doc = " hasher state."] - #[derive(Clone)] - #[allow(non_camel_case_types)] - pub struct $name { - state: Sha3State, - } - - impl HashMarker for $name {} - - impl BlockSizeUser for $name { - type BlockSize = $rate; - } - - impl BufferKindUser for $name { - type BufferKind = Eager; - } - - impl UpdateCore for $name { - #[inline] - fn update_blocks(&mut self, blocks: &[Block]) { - for block in blocks { - self.state.absorb_block(block) - } - } - } - - impl ExtendableOutputCore for $name { - type ReaderCore = $reader; - - #[inline] - fn finalize_xof_core(&mut self, buffer: &mut Buffer) -> Self::ReaderCore { - let pos = buffer.get_pos(); - let block = buffer.pad_with_zeros(); - block[pos] = $pad; - let n = block.len(); - block[n - 1] |= 0x80; - - self.state.absorb_block(block); - $reader { - state: self.state.clone(), - } - } - } - - impl Default for $name { - #[inline] - fn default() -> Self { - Self { - state: Default::default(), - } - } - } - - impl Reset for $name { - #[inline] - fn reset(&mut self) { - *self = Default::default(); - } - } - - impl AlgorithmName for $name { - fn write_alg_name(f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(stringify!($full_name)) - } - } - - impl fmt::Debug for $name { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(concat!(stringify!($name), " { ... }")) - } - } - - #[doc = "Core "] - #[doc = $alg_name] - #[doc = " reader state."] - #[derive(Clone)] - #[allow(non_camel_case_types)] - pub struct $reader { - state: Sha3State, - } - - impl BlockSizeUser for $reader { - type BlockSize = $rate; - } - - impl XofReaderCore for $reader { - #[inline] - fn read_block(&mut self) -> Block { - let mut block = Block::::default(); - self.state.as_bytes(&mut block); - self.state.apply_f(); - block - } - } - - #[doc = $alg_name] - #[doc = " hasher state."] - pub type $full_name = CoreWrapper<$name>; - - #[doc = $alg_name] - #[doc = " reader state."] - pub type $reader_full = XofReaderCoreWrapper<$name>; - }; -} - -macro_rules! impl_cshake { - ( - $name:ident, $full_name:ident, $reader:ident, $reader_full:ident, - $rate:ident, $shake_pad:expr, $cshake_pad:expr, $alg_name:expr, - ) => { - #[doc = "Core "] - #[doc = $alg_name] - #[doc = " hasher state."] - #[derive(Clone)] - #[allow(non_camel_case_types)] - pub struct $name { - padding: u8, - state: Sha3State, - #[cfg(feature = "reset")] - initial_state: Sha3State, - } - - impl $name { - /// Creates a new CSHAKE instance with the given customization. - pub fn new(customization: &[u8]) -> Self { - Self::new_with_function_name(&[], customization) - } - - /// Creates a new CSHAKE instance with the given function name and customization. - /// Note that the function name is intended for use by NIST and should only be set to - /// values defined by NIST. You probably don't need to use this function. - pub fn new_with_function_name(function_name: &[u8], customization: &[u8]) -> Self { - let mut state = Sha3State::default(); - if function_name.is_empty() && customization.is_empty() { - return Self { - padding: $shake_pad, - state: state.clone(), - #[cfg(feature = "reset")] - initial_state: state, - }; - } - - let mut buffer = Buffer::::default(); - let mut b = [0u8; 9]; - buffer.digest_blocks(left_encode($rate::to_u64(), &mut b), |blocks| { - for block in blocks { - state.absorb_block(block); - } - }); - buffer.digest_blocks( - left_encode((function_name.len() * 8) as u64, &mut b), - |blocks| { - for block in blocks { - state.absorb_block(block); - } - }, - ); - buffer.digest_blocks(function_name, |blocks| { - for block in blocks { - state.absorb_block(block); - } - }); - buffer.digest_blocks( - left_encode((customization.len() * 8) as u64, &mut b), - |blocks| { - for block in blocks { - state.absorb_block(block); - } - }, - ); - buffer.digest_blocks(customization, |blocks| { - for block in blocks { - state.absorb_block(block); - } - }); - state.absorb_block(buffer.pad_with_zeros()); - - Self { - padding: $cshake_pad, - state: state.clone(), - #[cfg(feature = "reset")] - initial_state: state, - } - } - } - - impl HashMarker for $name {} - - impl BlockSizeUser for $name { - type BlockSize = $rate; - } - - impl BufferKindUser for $name { - type BufferKind = Eager; - } - - impl UpdateCore for $name { - #[inline] - fn update_blocks(&mut self, blocks: &[Block]) { - for block in blocks { - self.state.absorb_block(block) - } - } - } - - impl ExtendableOutputCore for $name { - type ReaderCore = $reader; - - #[inline] - fn finalize_xof_core(&mut self, buffer: &mut Buffer) -> Self::ReaderCore { - let pos = buffer.get_pos(); - let block = buffer.pad_with_zeros(); - block[pos] = self.padding; - let n = block.len(); - block[n - 1] |= 0x80; - - self.state.absorb_block(block); - $reader { - state: self.state.clone(), - } - } - } - - #[cfg(feature = "reset")] - impl Reset for $name { - #[inline] - fn reset(&mut self) { - self.state = self.initial_state.clone(); - } - } - - impl AlgorithmName for $name { - fn write_alg_name(f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(stringify!($full_name)) - } - } - - impl fmt::Debug for $name { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(concat!(stringify!($name), " { ... }")) - } - } - - #[doc = "Core "] - #[doc = $alg_name] - #[doc = " reader state."] - #[derive(Clone)] - #[allow(non_camel_case_types)] - pub struct $reader { - state: Sha3State, - } - - impl BlockSizeUser for $reader { - type BlockSize = $rate; - } - - impl XofReaderCore for $reader { - #[inline] - fn read_block(&mut self) -> Block { - let mut block = Block::::default(); - self.state.as_bytes(&mut block); - self.state.apply_f(); - block - } - } - - #[doc = $alg_name] - #[doc = " hasher state."] - pub type $full_name = CoreWrapper<$name>; - - #[doc = $alg_name] - #[doc = " reader state."] - pub type $reader_full = XofReaderCoreWrapper<$name>; - }; -} diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/src/state.rs b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/src/state.rs deleted file mode 100644 index 282515434916..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/src/state.rs +++ /dev/null @@ -1,33 +0,0 @@ -use core::convert::TryInto; - -const PLEN: usize = 25; - -#[derive(Clone, Default)] -pub(crate) struct Sha3State { - pub state: [u64; PLEN], -} - -impl Sha3State { - #[inline(always)] - pub(crate) fn absorb_block(&mut self, block: &[u8]) { - debug_assert_eq!(block.len() % 8, 0); - - for (b, s) in block.chunks_exact(8).zip(self.state.iter_mut()) { - *s ^= u64::from_le_bytes(b.try_into().unwrap()); - } - - keccak::f1600(&mut self.state); - } - - #[inline(always)] - pub(crate) fn as_bytes(&self, out: &mut [u8]) { - for (o, s) in out.chunks_mut(8).zip(self.state.iter()) { - o.copy_from_slice(&s.to_le_bytes()[..o.len()]); - } - } - - #[inline(always)] - pub(crate) fn apply_f(&mut self) { - keccak::f1600(&mut self.state); - } -} diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/cshake.rs b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/cshake.rs deleted file mode 100644 index 0ba62e2c9643..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/cshake.rs +++ /dev/null @@ -1,145 +0,0 @@ -use core::fmt::Debug; -use digest::ExtendableOutput; -#[cfg(feature = "reset")] -use digest::ExtendableOutputReset; - -#[cfg(feature = "reset")] -pub(crate) fn cshake_reset_test(input: &[u8], output: &[u8], new: F) -> Option<&'static str> -where - D: ExtendableOutputReset + Debug + Clone, - F: Fn() -> D, -{ - let mut hasher = new(); - let mut buf = [0u8; 1024]; - let buf = &mut buf[..output.len()]; - // Test that it works when accepting the message all at once - hasher.update(input); - let mut hasher2 = hasher.clone(); - hasher.finalize_xof_into(buf); - if buf != output { - return Some("whole message"); - } - buf.iter_mut().for_each(|b| *b = 0); - - // Test if reset works correctly - hasher2.reset(); - hasher2.update(input); - hasher2.finalize_xof_reset_into(buf); - if buf != output { - return Some("whole message after reset"); - } - buf.iter_mut().for_each(|b| *b = 0); - - // Test that it works when accepting the message in chunks - for n in 1..core::cmp::min(17, input.len()) { - let mut hasher = new(); - for chunk in input.chunks(n) { - hasher.update(chunk); - hasher2.update(chunk); - } - hasher.finalize_xof_into(buf); - if buf != output { - return Some("message in chunks"); - } - buf.iter_mut().for_each(|b| *b = 0); - - hasher2.finalize_xof_reset_into(buf); - if buf != output { - return Some("message in chunks"); - } - buf.iter_mut().for_each(|b| *b = 0); - } - - None -} - -pub(crate) fn cshake_test(input: &[u8], output: &[u8], new: F) -> Option<&'static str> -where - D: ExtendableOutput + Debug + Clone, - F: Fn() -> D, -{ - let mut hasher = new(); - let mut buf = [0u8; 1024]; - let buf = &mut buf[..output.len()]; - // Test that it works when accepting the message all at once - hasher.update(input); - let mut hasher2 = hasher.clone(); - hasher.finalize_xof_into(buf); - if buf != output { - return Some("whole message"); - } - buf.iter_mut().for_each(|b| *b = 0); - - // Test that it works when accepting the message in chunks - for n in 1..core::cmp::min(17, input.len()) { - let mut hasher = new(); - for chunk in input.chunks(n) { - hasher.update(chunk); - hasher2.update(chunk); - } - hasher.finalize_xof_into(buf); - if buf != output { - return Some("message in chunks"); - } - buf.iter_mut().for_each(|b| *b = 0); - } - - None -} - -macro_rules! new_cshake_test { - ($name:ident, $test_name:expr, $hasher:ty, $hasher_core:ty, $test_func:ident $(,)?) => { - #[test] - fn $name() { - use digest::dev::blobby::Blob3Iterator; - let data = include_bytes!(concat!("data/", $test_name, ".blb")); - - for (i, row) in Blob3Iterator::new(data).unwrap().enumerate() { - let [customization, input, output] = row.unwrap(); - if let Some(desc) = $test_func(input, output, || { - <$hasher>::from_core(<$hasher_core>::new(customization)) - }) { - panic!( - "\n\ - Failed test â„–{}: {}\n\ - input:\t{:?}\n\ - output:\t{:?}\n", - i, desc, input, output, - ); - } - } - } - }; -} - -#[cfg(feature = "reset")] -new_cshake_test!( - cshake128_reset, - "cshake128", - sha3::CShake128, - sha3::CShake128Core, - cshake_reset_test -); -#[cfg(feature = "reset")] -new_cshake_test!( - cshake256_reset, - "cshake256", - sha3::CShake256, - sha3::CShake256Core, - cshake_reset_test -); - -new_cshake_test!( - cshake128, - "cshake128", - sha3::CShake128, - sha3::CShake128Core, - cshake_test -); -new_cshake_test!( - cshake256, - "cshake256", - sha3::CShake256, - sha3::CShake256Core, - cshake_test -); diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/cshake128.blb b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/cshake128.blb deleted file mode 100644 index e8ae154f75d36a6e00f1d55f1eee1aade8c7e66f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165220 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≻N6>0s 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 hlNK!hwM4?Ukb`MD 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:ke&IHhE4&?s1 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 diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/keccak_224.blb b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/keccak_224.blb deleted file mode 100644 index 393d0acebd1cb819b00a8d382444ace7f9a79bd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31 ncmZQzu=p-v9-zJAA&2?i8<$hp?g*XO8OHP{RNG^_CD&d6$MX#~ diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/keccak_256.blb b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/keccak_256.blb deleted file mode 100644 index d964e20947587921b1e8f1927eb062b988e7cab3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmV;a09OA106@jkMgfNRBRrCReX`ug1Hk0~wo}T2Cp&xk*aTgLq;LYvK<=$=zsEER zR?6+bL}_Xkh;USzYJYE5mL7zqOWBtTihuy=Ca#ML_T@2l+yBfeYlz0Zc3+d7Jr|0b z-k$TS6C7dV93Dc=`t-Ei-dCD8;ZX0s^;KI;9JB;E*fpml;`--6S3+^k6P2Eg-mY8w X+XAEg^-n9S{S3ailL#u8NmtOp!O~W5 diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/keccak_256_full.blb b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/keccak_256_full.blb deleted file mode 100644 index 71af3f2347ee593f91f0e8369ada7b2c8a3a680a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3403 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 ZA+t5zVb>qj7ml>4sEWoYY~-cm{|86ALbm__ diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/keccak_384.blb b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/keccak_384.blb deleted file mode 100644 index 2509429442ac211eaccbc0e8a62dd247f0fed1a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmV-30L=dY0AMU56l!Cln$MZ%JBawgPO5#z3a4>+49oy(`}&XKN1H9uvJ+x6bU~~V JwH1*WSN~E*7mfe` diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/keccak_512.blb b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/keccak_512.blb deleted file mode 100644 index a9e47e0770ae2f87f08d3671e5e195c6578fb28a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmV-K0K5MH0Du4vt3uvPJnND*{E@8x=SH%eDX7C{x5f@mXT)anYC{CT52?!e*m-uk aMw`pvXA`tF@R9E)Y5Nuo+Os`2aA*#Qav}Wy diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/sha3_224.blb b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/sha3_224.blb deleted file mode 100644 index 510e160c4cf48b246cd1f120d588b35f9747429a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40513 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 diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/sha3_256.blb b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/sha3_256.blb deleted file mode 100644 index 00fe6fcd918bc93c653db5161c5cb9e175444766..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41537 zcmV(lK=i)=06?ez#`wP;*Je?{M^>O=)?)R5|4rmON&14=3QK_aLrM}KW~)Jk?VDqD zK)Hx+`31C_y1)c~#J4BTbj+qcNJBhR0}~b`zyckHiZFsyb?DH&FjAl*7z3E}%0wf%f)uvCs=^$I z2cpA2jFY`Wu#(Ih2F~9yB-QO6!k2_ZPa@!oRjOE2D^g1W%{^UTX$P<899?u`B1%7< zo>S-Ggl)^T&Ongi3mmA^Qh7~%y?d@f3-2ZH?0pCh1wTkRcBi7RJ^F;IDo3-+y-Gkj*f%y5B`;UqFfqjcrxT%ivze zO~P}rZDz^20A^+G%UfV0(&{`$uj8=_T@O%#q$=6iL2i1jPh{3a&XomdN~elw}Z6HeF8X2LS=> zn`j7cE~xmcdx0LPt&>e$n_|WaM{z(BD3#VarUMVi@;N}oDCecw$NLuwdH#FEBVf)@ z;#+!vPVqdKEKw#6-I05h+`x^vlzmyv7{Hv5J517m{b=a8GD-? zwYno1y;XG4-yw9b6o^4dx|=UVZD5`9K+ZE&nU#Bv$Ov}XpoOjoNe8@HVX_PL_R3h* z+Ovw=Kt2TSQi^Jj5WC(leuSnZs>&D4hWY4`z&)k&!~PpB$Ur6yGDavQU%xn0h*sA_8ZlY(uz zBT;^mk2B-@s8G~aVDE#uhic5PqN$jAB})^0ZWIb3X&w-1K{!Z2<6yKTrNCzd(MUBe z1oUMejXOA80rF4U3DRcN?SJ-SfKp`a0vwfv;2-{NF}qOIOnJ7MJ#uG(W7|hbN1#(@ zMj6pq0czVMKU|Gas*?2zvu;*89|3zl1{aKZ455lPI%Tp4Lj_);k2$F70K?Hb1O%d>7Un`_iooSDrl=V z$9f+5fK*vjy0sF|GJR&X+47bc0DwRyB&~KRP-|6Q>Vtw-BP7p7FS<%0Fy1~ET@iyC zCk>preCWc{Dwg#PabOFy$|j8Yj*!+#YYJu=rKrX|w%DL!P5f+r$m*N`Yivbt8z9XY z=Yg*vMM}tkKsv40;s|XxI5J3@qX>?WKU{C9Pb;4Ga+R6q1@=c&yZFQ?T1w&)Zm{u^Po4%L)iKg4I1A<3tJQC=#XP+^ zvHG$w>Sq{4K;^N~R9C$v^D5pcA>H({~d-JOD1<;u>;WA;vla%G3IMMGp8_OO(%} zg7cF?BvpV~b&jL{r#P2Au(-Z{S)0D}QIm7l=G@mAUZ{oqnH`B|Vwopd!k~}>kuR{0 z47Im!Nfs*WjQD#OEc2}y0#n~%FL$x<#WLfy{F%bjACF}L7L}lfqh93h<>NHNY1r;v zDfX3tU50I`o%8pU13(3zEA8~A?)#PeTngcJR?dsv#o>q#t1oDZ1Eg!Rj9-9UN5$gWPyenTnIm9HhqYgw!3#94tWdOIz-0lZJac+n@z3Us>k! zWqBCGg6DD5F$oeZ$h!_6Q^e!ZJ44Pymk(YH2c0U{*P~RN*H>V|8?jqNb&2S1jdro= z&eA{AUiOfoGOI?ij^Cz7l7rSn zPB$E6SrCf-oHg6hHQ=_k|4dG$j&)SM03={TJ0WDsQRry*lzn}A4S6m~zYFE`P=!3i z4TVTsD~MO>F}3P$OwXe8r|&a>25o(bdHt+mimg3{qwWCbG z7Z&kM_qKlh#8e7(%w%Oap&E|;oqX3)pMYRk)~TDuMTjJ_R*`3Ls6lW*avaS4OL^+e zi)EvBeC4`+bP!CKTE%OO$*#Q?{=H1vTH6x~5Argc$kq|-6xzaQqWR`C$(`dlm;R(2 zQm4h?F@0NIuG3z+eOh4TT_30FtHWPhD+&)Ic_SH9GAvF&LNHn-8h{Dy{bI-284$T^ zn_bxbrLi(^Tiu8N+^|JS>j_Y z5r!T64rROttcn$rh}FXVR_0KY+>y8tjT-)A36H}X6D(KKW7l99hA$SyCSLMoZZ9kj0$-JE|j?WHf*Jpp{c^4sS$*fH?f zAkb}JiQ3FaS2+|9UN&!`GsorX8P>Py%JyA3L%}F=5yCcdz83BN5+OZwLut(bj zAf<)%Y(m*Fbyg@+LWG(2Y7Mv%{N38J_s#$96+`9wauEw;Xluu|hcSLOgeax2nj~4Q0(6 zx{YX@EkHd2v>AoH(SuyHbo(|;CBn?9+78nDy0=v%v=ERu6}ffUe-+0VkRy zH1{#!9Wh9Ie|Ja@E-;N3{qMFmCUEvm8A)4OZwHH!T;?YQ+n{V9$;=|LVwM}5- zq;oXGc@xEHQ+TFn>9;NHGOtuL`9DS%ZodRfM}$Uva0GDBz_bjC2#kSP7C>kWaI!-d zJLct%)41Z;UTBo%=#>G)M99FR*LJL}g_(eG(dJaQe6dya$9Zw4P5I^1OeUks*2ng< z0Mni884w9Zk*%r;TjaW3hG`0yWGG`@RVMT4M)%x1)Z532ndVbO5r?QBn%vc+#qw0V zf>y8gxn8pI7e0zv&R+X|H&*-bm3m-%lt&K-OM@JuKw! z``z{2-56r1qwg1m4I?$Z)m}aX{K2LS*gTp;5}JoX^$i^Gm0A|Z6~XKtBF;XxMYy!`WA+AM>M$sn9_!Y~!=q;?TWK7Q71~pwJK+bI~*wsWI z!CQ!r?Q#Yl5|JfC8|~^c;11xYWn2csSb%h88gH}2xD0$~#sL;}<_S)j^s}{@6&XBjC zp#p5~cfU%pwFAYuOd?jTb+hWm{awqJtfa6ygG>8Pn)!&%%kr*Se7OmEKtL!56Ttd$ zU?`uz?pmdQt%6Y~ITbywN8Sw;LxiN*v+aO(imwMR&WbITyb!a=9DttbFmn4KT&M90 zy@Kr6Ebu_Fyh-X4(S>*w!0DHP-a6a0L_Fchm*r82&aWaGsc05B-UY53GATIpYtB(r zJ6G)6OeSJ-C7lTFks+E<%&gZ-bB$fe^e3qtICbWor+o7(OfOu2+82tdTa2wSG_|58oI?SRP!HiZ) zxeO{7+F2}pX=smSfLBwMRUVAfJ`e8*%5KzHjZG8_K19GWHC^$=F;-1~NHujcL^N7w zf#Dq0;FY&M_4q7`Im*)3n4xx{aIUJKwtLVsTr`EFw#Pbg++19MdZtC0xTYIi&dKI_?P)}GS;*Qw z9>&MV$SQOwxwVA)XXy`U;=m8P?M4%3Zc%93N*42#_oKsuD?1ZQ{G7U}T`CXaQuIp3 zXdbrI3b`B|0)qb5a2!`gJv?74xW=b2AGB9$qqXr>5Zj4X|93}>Ca1ug>U%ki{DV+G zQ;tA*p^NaPE^l}7Uw{5gqsf`&ejGn*@d;2^A3!uv?YEbJd=5IW;8b&)0L`|jd(kYe z0!viOUR4fkLQ`PE=zdv1A6~*v@G(eL@bzp*X0fp3)k+&2 zE`cI%zxMVz-dITy#~Ej+>u{4h!}ZZy$s1fIMA=boJUWaOPUMaei_t_Z1Uz~Tx?07t z)iw&QTaaZyr|=aX?rS0bf_`ZwZB`B*sM$HV31a+zs9_4hi9jmSfPSVg#g()PZeup( zKh6A&9Km(h9ju*o3Sl$SF`4SDD1rx+OzLYE(snVCTSgi8L)tDdpuh{gvAeTcxKi&s zn(S)|jm&PI8oHycVyp^mUFT)qEH@FiY2*FmN^}8l|AMSW`i~cv)3T=~wwB}GrBehs ztnNBR!lfI-EznhE3qT49#IcW27x3g=L*g~N6y;kME}82$L>5t&&`O0uDfxi_D{Z&V z*k)e7o$Ck!l_7*Cy{dd|sjbooi89Uqx}m{ADZI_s4>q3r6q1F7jVm1$T@>Cg+h_`l z0&;`}QG%e#;&mfT$;l{V!L+Mp^90WZAFK)j*e9-NU$NL1K)28_s%f{h(rPuhme*l1PaR?F65PS(Dz9O=%}4+` z`50T|JdpA!0_6UV($hc|lP_;&-m2Aj4kfEW3}&$88IHQ2PSK)X;!k*a`tRa_0ub9! zn=IU`rodvZGrmX>YANd&`LCpu11d}x0V9A%grU+pHrZG=s#R?Wnm2*s+iMsEE&=TM0eWPh<#b2vf6L~l_$7t+KtAFkJyO$q zOY|l}h7;DbC3%3CDhkTA2&ZBU9I}qI>C+Fy6JhK?apBewwRQ$SD-!mRA`9x@P;2Z8 zItXjNSY-QD`8~B(fd=S`u!e~ild4l(>mcS#dbxak(^QW)hBKI#rSQX$F;twWa29Sy zcSFqk;1;w(jfr!PLT_LGfns4d@p|n4VYe;5;@lvX7=X{>f#0iMq?LGrn1TXSN*No~ixGX`1s&*6ax{TbjIgX?a{5V=Ky%a6aJ{JD~~HiY|hjUr_5 zAk(>E%N=WsG>j`$sr>44GYl%Knk4Mo0K_({#{xDQg1d+)xKnAk$1ctQg8l|oabt;` zDh~QaY%{<^L#R1Ha925+W22Ir;qFKU*3Ld%4GCxdkOXOJR%7(a$rq3YqRzKfLf2hr zK(86;h|_*0ciK-wMmLGKHYL+k{LH-&%`9R2+>5XnCxHrCt{}Ge;Iqf6iLbJQB%}|@ zCD>&g@$_orgYRvGL0EdBz)U_n_>O@w&S6E*xR*Va9)vQo0{U9>;GJS$s@NsG8QPm% zY#`7oy`ucZi(AwFP6W;W0$vnw zHVAY9%=5~46~8=5K=J9h&hoQ-lhK;$WR1c3~9?tn|5 zGL@?%VtI>lu%WWkDILzZ6PT7YSTOTTJ2Hh~Qy+kNx0-I5fN)VzhGYW$!FIq{m*ZKc z%NlyHXE;8zml!I3TJLZ;NJ!FQ79<}T{pW`>UnRZ^>5gTYe}-r8MHDL zt(JUoDRJl1uwfmp`PxNyC9dgPJ%sI zcbKXezMFh=Yk*m+{bzZsHLQWPfe^DTm9V+0(x`!L=Fn{)h5&^Hy^ItRPi~qPJ6bB< zRroc~>^Ok$P;d=9CFCr?uLTUv8|CFyvM`6>O?&x)HX?Woa}%MJPlrIZ?kzuY_h{Wg ze^La3y*dcg@*=eEoxK56N3%5t-B9zZLPy2knu@(*sNT+?9y^D~xhM6oi|aRMOmB`j z3wQ5q(JAul@?!un48_)-f zVODr;qt@8NFqp-}d$xMUO|d~`uVu7FMA!!1<@ATuH#~orlERtkXls60A?L{AMS~T& zmbGVnl5MP4v+^ydbH)JyY7IcuBr?xCYfF@xs7T;g+}15~UIBL}k|O7<3iwb*V)~$g z6pMlBy4~O=@lBP$8JBP*$>BY>rOhGv>HJ9@abaY;tlV&5*n(kQK@>QypjN{`&G~nD zk8T&y7~WL^XjS<#a7Qg4(Tkpbfh(>MehvNS1~UP-A8h_kB3!FGBPj)?ZkbOA?kJJE zk}XNY+Wxm+d}(zIwta#umKSVBy^1OEa1(R;38ALr#}$u22j*8))-D0Lph?kP>OKNbqq?1<>)o{8 zCQLdcCc|pe`5a+^7W!`OB-&y7OHjVC1vCGG`TES3vJ8$HDz5{GUST5FnBlO2bh1#_V-y4Hr1!PoKLb9>!Mm`t> zkHR!}#rk)}t=+wGNM8d4wN)=q^O@oa#KvX^pIn64>kfTwd{dU=n0JpAYlB_6)U zh)@;ztM}@wu10x}g3DPZ-drQ}Nq%8d6cGfgF^#`U}CtPL!J+b{EqdMHl%$FaWgix0*f`14Jqq-f0|nPtz7g$bX%^;y8%q@|5`!1TpZwq{<(m< zxzBm>6^;Y%eq-XCIM;z{gw*#Q4^)eP!xjiy$%h-$9KGw>f9}f_fsP*MT1DKlHl zc{bWT%3P-3lRqT(l}n(28WNPvjecg|uk1kOij;ns*4=)SEid3LnUdxaj0`MbYuwrf z=afAxmEh%pAQgREenkiNZJH)@cGEa9=eu@|O$5v|INB2V0Rm&{U&{O5C3)K~YgqXa z)sxltpRix!S#Ce55Aye6(Xi!kfCXF;j8o-2+hYY%Vb{sBvzyrp%ra68yW83w>ea_$Car|pM`w>bFaBCN{k8YzKl_0qgKIRk6-RGjKjcTG;KTE{@(B>E ziKCZrRmot|)zY^s*sRADsRL6XxMu^T5#8WMZCIt3X=f^?3e|_WNFC(6rBb0}S9y4q z0qj%NK)D2hA2P7L7*()NNJ#nk&*|&fksIk(fu~v5t(PRH5G}q}XLh&7GQ2stwc(Ig z;wDupS(L%sv$e;E8WHtVa1jJdQ$RXpONjV@hQf6o+UC=eNEAHwBV20>d1*8(MWa!a zwtj&m%y)#Okt%w%tu`R4vYV)Icg;MwHa4xv^W2p69^X|~g+OjX?O zGhDN&9chkDIXbxL>cE0uir&8N8Ey0u1;7z!PE$f`szpDI;mfsoGO)Kn)W$#=qsu;p zQSgturQ2anCXZv$_MpRPo4%JlS<_pz^i|M-CU!ZrVgK@QvPD|K(XY;UDMYTN=?H$b zqn^2IwZpov4u*_{CeuJqlm+LWcfYJ(`-#69SG6PIeKZ|&Bf|pfaD#^})#z|ml&syO zZCV?NTB;W8rVvbmXoWJ!zu|ccUCH$9U+G(}(|#Q&d*={CA0A$g;RU=x?Kjs;9#xo2 z@xY(vq52c=JC^$D?P@9+P@y4HK+25!6PG{uS$%4%fNRq(g7oTWy2JZaKPG5>=2rf~H~voRy80k) z9`d~oaGB_P$YjZuzJNIv~P9v}J_Kwrr&vnVUoNp#Tn&xo& zg{xd^JI802&m_$_Q4nx}H@5ii*wLaKIfxt>96VTY&0(BrraM#)wWcLNfrGwCb^5pL zUzzQc_4xqL9cz_6k8$DW%m9Xmm=0k&fhrZ0*Gu)?zfo;s?t;3h zl93Md%ow*1KZckmZ_l(&4#h^o!<_w&=@2yklLG~dLQ+OAhR7r96~9OxYkAB%0wIN! zvt^EpH#jTR1dguN{Q|>zMCUs|<1O|fi>F`Ic#3{kC#TkoSSiGlMrc366XY|mJ-S-8 zfhCiZXb)Dv`7i{Z6}&^%mK+Q~y<-zaTM)0}*`1Af!8XRv%UW+p_P48^eB zEb<}un#8)Uef7rYARZU@7pqp`EUiatp&6LCxQ5{Qx2O)6*&2NT zCl8u;7eK2{T5vf9clfR*4O7bwaFI`olbEZjgdcbZ@kd}r#!rDVY)c9U8CO16B!*$> zkL%+mS09=js1ws;g)y!uw1y8O!=tFI93=oWreNaN9v0KA#J`;46~^&f91q9meLW`? zerDR7?#U&Ok1P4$D@w^XlihA9;|J~IX<7~TJiWmDX8U&t6YCV5qNx^<8}3O0#C&)H z=AJ-bVSivk`;z zLin39E=g$^gN$2dkCsQQZEJxvQMcQ-&M*G7C#f9IrtyuL@iAJd{IjIN4b)*KWw_tQ{k zUD6l>bZo84S3xlF5&!~BV?e76!q0T_BSvZSPLK)jF1bh})+;eUe@moq8XoLHWFCaq zcPF);bZd%d8}E~E1-^m@S^7Y8ZZNFORaqE>633UJrM_X&`41G70roLjc|;Xjh5Gk_ zHiKE6ll4{}f*a5pM;)eL~c2UhI+6S@gLxT5I z%^Z~`hl8yNA`evpgadHYl)kZXBq9%L{OKOZp!HHQ`DG+C<<2yTwzkxU_>AzBJomzF(W!(|)W4U?I zXl0y#0&EDrq^}kog`{HG4n+hGk@OZ^2TVh(W)pxh8jQZxoXF(FQI3GkEO@INtM+UE zgX*)W0Z3H?2Qdjy&@`qfY?Gnv=#rjeg~j8$Zm6fg`)y+~;~?i8#Op>XDq`Zl;ExQ- z**;;u+g;GNhNmd2W^V`JS8W)alE0s_4a!NZEjd=ybA{qSz72;K2Bg6$&h{4cIA9H2 zybhm9(yhp-WpTlhHXJ`sfjY`|)1f7ms26A^7XWBTXH`ej==BUD5c#i=Yz}14j##0-FI*gOP9PL*HfrlQQ@+{WoA2pX zn#ii^H>vw^IiaDa)yGI+T8;0rmxi9c-Er0xrP?D&Z4u!byRjy+2Kowjm+pPx7nooY z&^9g3_jSVl6k6JA+8oO=YxYDyO)y{#VC|Hk(!9ZSaiN>g7Yy3U$BhIb;JdCWHl&Mf zfjswXh1_RC5GB@5lL>7daVvYTf3N{@ZvxXhAz;GDg2NE+6Qy>s!qX1;_m23|^ko2X z398vYbjzN7d+&Uekm#>FCVYv(U9vb6j75Vyn9NE?8h8S7KJ>>#s8i2?pu$#-)a_WJ z$z(_d^dSV!Z8pUs(2P}0xV37Jt`yTothfB-`hBxp%+;o`hLNc}eF}{@`CDV09j>&DOfMD8^|{pu_%l2*-gtN$L4^+{8--j; z>&y~bI1E(P0mak32j;aQ0uf+{|= z;mgXCVml^Ik^_{kNV`lrTe)xh$nfPqFybjzt*gRzUswBf9u$7d_*Qi@+ipU6TjJ;nn1a1G@kRd2>petzJWfW! z6(r16&DJkc8o4Tqrz?qhmc*N~a~X?!9G*ZXDBZ_(f(WXg9!W`ZBHw1N%k z!D?m3_5pf{^M7x+yVMK6Lv3J7+OZBp$?{ zN^oK0y#f=if@`Zd4<8iztBVf(-CxnWNjErCppP(BJz7=FySNoSI3qe9VBrsbP@2%uRRf{~^X}-$-Ox)F=6dK@W&JfTg^{EFkbli@B+K5^u%%R8iy) zDJn)3lMMw-g&NHPoXMz#Ql`pKa3{K(_7PM72(MY%g)eKwJT zoj;7tOS5DVxL?9DjXpY~W%#jmWdapOue>koe<<4sq)%6nUl2ptJbC z{fDftQ({A2uFSPBIAMFn#lptoY3kAY)}E9dO40!>qQ$Zs&%c=Dr+TulA3xeMGw?>! zj~&QBE40qSDo^a#KfAioFN3Lg=`@pudZEjeM z3UobkSBT0`w%3w1E~qI_Tc%W@Q)al~vWVDEQFtT>Czo1wJH%Xj1Tg5OS>Hs6P+kC> zW7?Td6a(}Jm4XA#yKXnwoRp>N&tN&DC-%hKym~4yeV1yZovBrKe*m8ePD1k5@)DGZ=tk=Q2LPzlMLzUX zqwU-n^a#g#gC|xO`n*n~qJui8GzP%wW+z~I(~gcfQ<`w$l+0BVs-#!OnK(bukP9Ai zz59b*AJZYTd#D9Tuy~}Npn+0`nvsm9e_K@Tape6v#lUANKw*19F4j+0*4s9>I$AL=Eg<`S3*qD;mecG=*?y`bLMQ)cPCfm)m&p)z>te_rf z+FeRhp18bKxXHiB6=!ZnWUE8WG> z%s@ikI`B5iRe?+@&M~X7qT?ocMAG+O63;|U|$&Agm6MX$}qPx9h)=6q%voN z(aNqHPX`7L|Cf$OM!yVxFwJ2E3)So=MzWY=>wgeFy`~hzDH?!VYD|I@BL!rjReQ$} zE(_D`BXN>a_d{J|(h%+{uf>JFkUyjz8EC~1)zvn6Cf|Amyr37Ae!fE;~aHJMCy?i&a;{#>$U(e7rW0URbQrJL4_E7 zxbVw0WVo@wYxafIe=>&cq6>pHk6E1{M7!`6n(PXFJ=Q8Xvw+IEp^Qb?0K;}Yv#-c0uh1p6h5 z#ruNQjR+Td#`JYy7ytD@P>U+_cDiI|&zLNBe1wfF+KmQ^Q$cSBN(`99bI>nqfl$LE zYjfVWW-Iga+NF;Zdo_!u5LOQNMOTHXzWuN@pl0a@1ox~J~ z3kizYPz{@4ao@wCO7_Qf5!fC&sDw#|!@j2UY5CwGl*uS)&0kSuVpe&N@Ipyc!9z>m z?Vqf(kg$C;E}1Dd;P{LE4v0z(+h?5xN6g;FI6{S_R4LIFtbHR|adJWe9Ua3~LG|#Y zj)XwXJNu4Tdt}A#L7m=KTp1bHGTdve;XMs|)pX-8y>fB@K z7)w##TI2mes>rEhy9?pX2&!0T*x3-qX(AqTBr{-SZ)H=_$_1!SjlkXown3i5Ny?c- zfEhgj$t5N8`#sM42(QM{X-B=g{e>AnQ?&*O#uNz!#X4q&wT@Gx8KrxcBQfpifl04D z;}MF1out=i2B1PqP8}%_usWRQ&#CjL7w^mAjH>sTmhUt`cLX9cnoje(Oa=)t+LcuBz#CU(#0eyO5 zbOfHHJ6CxYp7%#9+r5+>%YyuKs>E7~l*#hFGEH)0kn4zO9LG|Z6!`m!ES-o}df&Np?jTy5_qa$v z%jhwVdoSlJ{L)hl%tGCSu{Sg{{~w&6m?r-dj#VCY<|ZC_cvEKA0!!D;obw{t zzI|8wW)NxeNE~~&SM39da7gCn)P6BlPcUE1f#5!nx{rf0-G;`tvyKCSTH6u!3A(y_45l=aYaP`&$jhyw zNoUus)Y*q`cf!~V4^7Vd*Af*-H#LHAT*@Ssy(&X-Z{|+YZ3UeBR%71kON2 z;&z!HQ-ZyIwXM$|c{V5n(?-7E#*uGL%1c)y4xE{RT)w?e8if3d734)KRJ{V$o-j*) zGGS`1*#$R~aR#nVDBhils{+xR!{Ytn)=^cSDP&XR+o?lvp-sE8(bVDsBLeP_;s`Px z{Mb^8*q%n*gPy71VUDOdN^Acxj&~-y;K7^COXV%5C5|ri>1v`9L_(iQ?_9Ko*Z(!j z!Me+Sm2nwFyvr)HM*!3<9{NRj46a)xd*ff_ISfl4iO)n#KFP%wyd#wWD}|)b_c~3#wv3-7rI_{EXH(> zehp}H$%NM<$-6rdez=w~g)j<$zouN?NnLQHY(#~I1^mnH2y81w&iP~0GL+ltaBCB< zBJsDx%~}8){=!lFp^kDaZX8PyW|50eZ%C<&WV673$ZBgBrqDPwa@Gr$M z4;g~`yDuSm;)4U^M}guJDg zUIB6?cbEH9WS%aUBk$2@Wy2d>Jy8?2i?F}Qk`JrhpoZ5|erDGR&``Y;(8*wjKNWAS zTRk{H&HUV(=C4tmvSOltK#6LyT*IH1m`!B{5x~`>2n}008}Wv#)G1b2i#u4&l!pp6>*uZcAhP&9q=8}v%f4snN|%BI>ej$l zp{1~xM~h2LzV)eolgQ*RRdR7Pb^I!bMKRZ6FOP?lhp1Vo4-oGHaE#dZK{~UAuftbo zi-ItK2WlEH@%K}C>D;oYg}u_1kY4Bv0cfTwm6y>B@h#HW&g5oA$K|0x_Tb_= zq=KvEW*ipgp7G*?apK}O!&$mclEPLdr?>wT_UcOM2I0@)W9b(evG-7^Y`x|C$y3?o zcFiGb{E#v_KrQxW{9R7196J!X_|&_BuB7=rICIs`T>Gp`X+vHce1T-~#VF5rIfq9F z)Yz?CnD@tVY2FK07>)8XvfPSWG3}+>LXq8{Xy&@pdyRi=oB%|#zjV99*U@>76Nd?~ z*Is;CJv_|Z8z9FQOHOGj-GU0vCM`wG`r-$EhliFlacBk#7B0-F!;Bh;H4D}|wK)?{ za1Ye2-C0@URWp662E2wfkE_e?-?hAmmxI_tz>2NL#P-8)W${+%QOThB7v!U7wXKub zbb%@z=BK$l)jHX7GC;2kRCH2+GU8&JkGl>uKwp0)9YN1bQ&r+714}gB{K*zBz|7k6RArQ1o8GT6Ty{=M-A zn~I6AKOecy;uo<}BNeQd+Io&V(f(q=Kv%@RUN=g9ZMDr%pNNV5Ea|g6%Iu zebGBE!2~M&`QFXL=y&B0^bl&%3Q|%q(HS5zN`VPYqaEtDM{1-mAjn8V&%wooMecw# zE8RCh-D(zjD&p905o8;;7s5cBzW1k7ku^#3)ugC0GWPdalTA>nga4i&rIKy_x~xf3 zod9mRBgL*zNbOWk#BuF$k?r(jV>mb@`4x7XK4^fH#)7aRQRVIdlum&sD- zP11_*kea$N?YRT8kH5n^cLU9tVilnhI6$!oMS5$~F}_2|{vIj<=*L9DyvZl2!^DR1 z5Zup@e`|qiS8nrC4KTN)iJOcKUNxRY#Tc615Dr7WLYe~mJ>~yTkI?6xmSe2Sa?L5p zMS`)ClBHM0u`yDY(P;a%PM$8!6M&p6U(T71++}c7UKE+z=lgWjeAn|>BeD{(Tl4j& zoT@Y;Pu*t?GhfRPZ(WkZly5}Sugk73L9A6xj%Qi(GPi5!ngb-N62(X@9;5Dw-qe$C zK0F8nHuX9B6Ml5Y(>R;oT15v;N4$F=u#|)crfr2@FF>Xd34@LLTNG{d=EJ?bdPjTX zYhozt*$^cGD)h__vhe1-E*M4|8CDYe#mAd*XR4Obp^U={4(OJ(& zKY}p>R{rG43Z772aQN~_S!H8rx(PTRqDAX$J$64Zlkmu!mo8?tJy}3)p8>9*e~UX| zT&zyy&|g$8eGRKc)_ly(I$&(e>oMvdrvO`^adzent9^L(fe!G7^e+hImGJB#b8@+f zaLi*NS8bBcIQPSsqyxIz6-d$r!$YhI-pYnDQ**<&ZJ#m%kLr%IB^5wV4=~7(u&Y2x zVHJgQQ;+GQvNX9$36b(`UZ79i$;D-XZax(?4Tsk2waBfR)Fl~ftsqijJPXy67&#FtNMk>$M>Z`)d_qFZoE4>auq?|2Ra=(K$H&70159q z3t2FH6j5kz8X|BhB7hB8yyvDi!E%1(N5C5)M|tR&{0>$Ris$wl?@e{;rk1%O{cCew z7Zo+>?b2t#lDU|G$a$A>5CQ;@mDs1GH{w_jN7kBNSrUO(R z=ak*Wb&t(ot$4sdRXNh-Dq0(}!bY$agI40QcrU>`5G08=pv0sL2_IrdfpU#4UhOe&Q8A94jp00SqN|`v6oY70 z^Ik{=D7SXdq3EJJRD6q#Y7GgpLDRmIcNPrFPG^(Q3Q=9cnJl;bbRDdraYG%coX&4| ziSa4otX%e6K-U8UT+$d@xi-ik0^0b?!g_k1RZ9jLW-vr*ZweH;6<*S9mAztnas|M0 z&?{iu57*?Lpjg7-x*#pD@ZOQ=MbCLaZDT=_2f3Y1v8~sY*ixw4tP!_~uMB--Qv+F&jNWOnR2sv|;l>dLI zys;)clm*!t2g44+jMgnu^TOQ5#}RdF!R#eTZc(6bshj**E@;%+(wK+*{ft`EWivbn%L)Pkt% zAN@S{3|0A!Z#kqJi`v3^7lC$*jcB`yb#pJ`a)DZCp~=OnF|-}+$VonSQe7PZJu}X| zo*|{XmD?s3muid${PYp^_PlR?3sUavPD$~D|+6OPJ^v+{yJJLOT?+=`~8?LldQcxwTN5JYb_j&vdMybRA)Eu0ub zglovzjU1cz+1C8Di~KwIJ2uozPpLF8uXW8C3*I)T`7eflSf~S#4fp|pP&iG6*da3U zBLHf`uDV#@Dg%G!uf1jLr^HEj-8}#?K+eC%Pe``sp}*D4P0u9c)h?2~L{)^2Nhq-D z$hSvtKe24KHUj+#Dzd3I}5^rL&GX&iwd>ZYvpk)1BV4~u;-sFFMk{{m=KDz6`M|Sk!XH{DI3AK!c58oROBGkVCY~&mX9misU zddX8tBymgBzBkB7l-^1}xoi?fv~mK^eZDY0-*$f7i|qAqMcs zu&eZOUM!@J`SeuWAUu|3W>dE(2sIP<@3?MB#S^=Ai#r7`;vXCZyEDUaDb~z^@vio* z#9I!CC#W#~R9y9a2~~hB5q%@fwO*o+mB84-`Ng6_vp+z$n_q!~)B8%gwmy8aYK{nH zu8n!UOi@bMk$qmvf9;Qfd>GRBgg7PaBO8mbmJChmluvkr|qzoss zE(;rfK`c)jf=CW?a8dS~C|~E3%D>+(%sR<3D%<_|7Mmau+xs0_J)S*jlAIq=T(Q4%WpZ}P@0OhN1D z_JA3U;*>og>DUSVgA&$s$)Zr&BD!vp4nU7@EDi@bfqqzyl(_{;ydjC-X}G#HG#hu# z)hOqN4qflcr<)9#MJm*|Dx(Izgi~&}&fLBQjeCTquJ|UfD7c^}8)>XI1*v0RsrBj# zrvUTocs0CKVH=VuWH1bsKK^u(<7a#<>)?Vem2A;uGq5aZ#G*1%!};M+q!zT6GFP{Q z;5hcQ)yeS?_;F<{dSse=&fL7rZ!HHUyO2D=mb!MwYN_!G84Dc|Xqh{zpZu1gWl|P* zG+4gJD-Joy^1&fDkLtANYCxfo-E&o7hU##h&T$e4nGCy#;v z2$hQV#Du#F1$(9wEHgfUWEH zJG3D?P>Fw_1to6O8&;6_k5YwPjge@iwr2d|+ABqEdVYKtt6wj%?vS^hX@?T&V{uu7 z{RdDCG65Vj29hGlB5za68pw)TP54-5-t;|3fuOTji^-PAd2q2ZKp_@jWW_63j2_48ZSjy= zD_OeKnY3{82%>9lHBH~;kAecrDkD!t;_TIiIF+PP(}|;Ls=1v0@YTux${ucG_hYre zPr0;sF+7fp4*s*Ol>pCQ**B55iRON+68!^?B}dGT56RnEA2XrkkbGpRBHf}s$%1nb zvjz!;RHUbm1p;E*TU1*Wo*(htrt5P{ha*F{LdAZs&)S3q?%TAE^DdcbZ4+5}BV0NK zHcmGjEq3vcFCBvvZTU%D3T#)`zn+=?}<7}eapNyen9?C9_b50 z>LsrMKm{HdkYr@+f80Gc?mN!*G&t;D+v-}P0-{TQager&;DQ9vYwF(us~t_o_=}81 zRK*^KZTK*_oCfEHrTBGzi3u?Z^&Er_{*55BQ!(^4U4Zv8m6t|S-PRz@-bXO|Y>f>q z%PU3MEl<6*XTYQAYtg8um9HlI@}I`WSwYR)2@m(pBMQYPinL&F%(|Z5(4w`_6z&W( z@Un;+z&7Ge6&vWD>ulMlr;xAA|07L&u^XA|^^DNPiSi5D#QE^zk9FhVPFp?e&R}{; zZG??y`g=(eEOEGa{Z&`sf}xJeAHAtfOF$U@X28t}T%5=e^+5|<{lT$Pt~{#@Gboo% zeM`Qy08@enk7f3}S*TY90d6ap_+T*x>@`yXW(e;s*5;ce zz6)^^ziM_1rs>WcNcrK00WA4y9Y{&nUG=+z6*zy_j-C}hcKEt}#>j-25cQw5yPE(* z7$FNc@hO!ihHpd#o&kO$>1@71hMCY5#_9pd@B@nwDVT)Y>@k_U1+B?Wm0A@uA)FBv z{?O&}5-6~7^bOT~LO|J#H@7}PFW~w|0}>5<3}=@v(lh1WvjCzd1xGKVqq>Gby|gAc zk`bBK1Sv~Zc+R@a-xDq!diQ5rcWC7WQ~b6Bf(V3(9#Y`cQGqfL!~J7hIiNagdUF@D zA*ZXtaNns$#3pH~%e&uz9ueIE z3jNoqLpnQ3`n`HOUNl$bZR_`rgtwru$_|WeQ@so=t}(K33}GlUPeYg+Sohtj-i)v?z(I~HIXCVjB@%(ee z%5(%-DSI-KvVrM4&bMK`=OP?BRd9}8$V76@+^U4^@;4*Q36V8iVt_#K#KAXDGpQZM zSNNm)QFc7N54s$$-7HyN(*mlot97Y@3~;0i`|pw`dK#^A_P3n@cNu(6y+bBw&+G-z znXJoY5Ms68@m9dHb2eytl(J@d&)uD`deQ_ljoHM}K@5(Le&hK$ zCM`fi{G7UyFgtr*mad^H-KI!c-%Ez+?h9DskdfxGh_nc-l;J5#i4i1T<6-6wU>^Ti z(bIN0^L0Dyfa|pH-X(!_HV0-S{AEF395+5_pch~7bA^8@)dj*UhCh`L{aJH&kGSNu}JHjKp2|2w+eK!4E((~ff(~>wZbY9;_+(Fau}@8B%WK)e z^{zE`A=S7PepV}G#$|=d^5l`Ug(;vKG}0#2HkFZ6fm49hXr3^$Q&-KbZV1!zu;`8; z1_0J8+4bu5h~I{!M-HMV0AYgUNC^O#XvD&R#65jvr6!N383##V2zxqeyn}dx_=3nc zgGDuxlZl}#EO;1xE}(w+xbE_O$WQ{qt~K$c3+`$hNVec;RB+kG5pFnQdAFk(+cLw4?AY zdzXS`Y5IZ?j5nC&8^(l!*E4-OyLH^3{)Pt>sjYKW9ufdqh7H~%tA{djBDPHTbU|8h z_ax2oaNa-UecA`M9G>!{RUbvASV&+bkE`BiZXDNNV^yj?uB+p<9mo^e`!1?a4;`O_ zO?<7Kd}&(fOEQy%ybJG%Tb~}^M4&xOK@7q=d8W25Pc&*?jo4Abg?W|TzgsPFdh3L9 z5aITuYQxfMf15;@TJ~1bx5+?mik^>0+_dj&gUYP=uKQsazt8vNOYdnn>)ptahJ%}T zK!leJc`zaq1uJCQr~tkSoug&B*1 zhqAoXRMq1#jI6US)+QV=u77M)?`nD~OrJi>fzCBm)bOoFZPdXCsRNnU07032J0&z) zmQ(Y|rg0jvxgBbqA{Im~qRDg1)`jkNL%-K^C!+VRoU(&r3J7s+`$jHY9c4o-snu$b z=n+Ib(d@YJ-WQylw2P$n{=;C#ZzV5oWbMgoKnCqDyg{7>IZ5b@$-qFd>&|pHTF}l3 zz|BooEMoXceS#FW6HlBzk==j*bPWKV*ajpB5!D*8RBD$?%NWx{WGkv%)sQ;)O<3$( zp>qM%><}X zjxnVF;xoqqsBVwBMsk+>w6ym+cpV~Hvx zmEVjW??BIxV6Q$-)N>ZB^&VT25Og`P$wAGz!iun`k@Drp z=(|#d1}3VBAY1G@ej;ci6VaHl`ZN4;l{gbrg@;(KY>vkI!z5g8MNJm^FHyu6Z>v$? zCn#9*)&qA8K$w4IL@h{q^qkehnH=a?>MCH`wx(J%K}ltkIdiNeR|uXpkzlvY?ZhuB z;R=zG7lrn>B2M75NjW^+|6x(J3pagWm06NK353n200=3$7OQBMX+HL%8Jj#J_uN$g zp<9AjLJl!ZA}hcEyiQaT=G}tHllU_aTx}cVym|178VW{0W8?=g51IcXVDKug3feXH z!Kn)EEMq7uBd3`Qt}t>`f*3@Z@Bgez&ZQ?u@6qJ)3v=X$SiX^5h@t=GDVqxbSU03= zFCeMQJZ@yEq18&8?;i&v-LtG(+?GF)5Q0TMd$L*G|Y6EB)$woeg zN?6t?Z+KoZs02hhR<8?9_N&Ey)xxob-R^{m>Ie<)?q;ep!sgnuVo}5bXe($Wf*+ZT zG8QppDUKhn(;KV2|Fx9K7>LFpka^h${j@mkiBg?ymLV_ITD~AToxc4vB1lklHj^CQ ztx0aSK_V^da2F&&(ozfHLEWp6_CFyKw|wW)sK*BEe$}m<_ZCx zgcQ_pu5c$fyfu#;fV*$^z2x%SwQMPzc1sq59Oh3xO3qw_7}j6xE5*{I1KmY{G;?k{ z4fh!di|3*S-mg;Dx`HumuQLw#Qa4eE&Em71$x5V2SBicrjz3zRXy_KW(P)YL!0Ygn zodotUGp?HAy{mJ$j3(B-CGJKJ;qO@c3i^`FQ=g1>)6kdarlvl-n^=eK^UnuhD8;+g zx!W=kHyYFa5*<#P^g=20;q3LG`S9zc)y}slc&j4A@atM)QzNWq_XZzIf%?caM;;7W zRX-4fb^a+0L*}4Wu0G^%wsa!+6sC+z1#ixm`cTsn$VMt-ddM1 z2-q0JmIvA1B82B*j~j~ZgL3=TF4aX>uRn z-?TVFj^U7`@7p}CxAT)R7r$ex+iccpO>cr>XpDh17yj7uocWey; zg+&M>K!yLm1q3l2A>vDrfYkQW+C!uD-RDA%nwe@z8c%k;$~(jRVLH=S=w0*u_b zv2~3*Ic73K|2($s=A&wF1=~Bs9u0;YI7@BpSi1>r3PLZ{Lf;o&8{tGFLx28rZ z|L)*=XYF^Rr1pOp$v7YBv7c_{0rmTtuPEYSlbD?bR*&Y0=T$(ipl3(f_)$PC9%1Fw zQUmgPhVdynfV#6mlG^kuh9j{c1+x1b7_6~^B1CtW;)$DbqgJ|AzfJS3%52*ZLF-3* z(Su5#n#;pLqLkMu^7(!9rVzdl@m|}UZC$h$M7f7UU=$C=Pg1G_@F;AGWCm~sdW7H? zl4@{6jj_8n9q;aQ7XlO|_<|kpCeiQLf5=m~7*t&aTHKO^d2U!dcIN(c$*d)Zsz$1h zhy?QfwS#QLv#YDCgej$XJ{Q%QpE4vawVv|~*R89;ZF1Y&33ej{e3+P@h|x~30;eG> z;cmjvd4Z~_nMvLFp3RUmI(NKI8HlJVzkGbJGLb;2sg7$p0AI^7pYB-2MSTReomurb zbN2kk23=_QfP+7RB%dr8t?9FX$AsZ<`*uE>q6PLt0|tJvyy}zRU93y>qTma78DD^n z@=wQZCd+%{9m8J;M9u9LXS<@9SkL^I`zZkfF|ZwKKeH8_!MStNRoa+C<4OuZVamO^ z?Kkp4zpJyt4Kj2;Kqj@COw2f1BLVn43kn$v4=n+#xbV~w5#bLnP85@QCsmoHEx?Jh zU)@qPu+O))*si@+JfZq!JX``D{cl+y=JAXA{l3fas{kkyGwo2hshL!q9FL4+*J5l) zGA@^q)&FuSKuNvn9&`9W$e$}TVJGUj;((RhM3Iad8m_Jch8!Kx6iOc8e}X(1f+nsN zpFg8E82~Egyv~ff-F+zK?VVv$MU}+K^gKW+o3kG~FdV=d%8=rx zo&o>5zY^FITJf0B1g=$sK0-BTO^9#f-D!bqa< z=0NAD8q4oB*Ro4+Wl6Ley@Fzl&-twMA1sR9D0DW6t^tB5JC2vd|H9U!52xOL&is(` zu`HAhdbAZX9x3i=E&9iqunEbX&D(H~&RQ3YTs7`1h8Gk*+)O~U(-USNNvqwH&ZnIb zbr^tDmi}tbDJ)DXA9l0@seODoov($oYS>N|By4BagJ)O0<2J&O)zksz!8mHOCzr2l zvQg=>*#31)M@TDj;IowKw`mpns0c@(bQX=v)A6_rv;k6nHVP&m^+-EMA!9XHI~%#K-dyV6gp|@9G$^v zwO{@Q)NK#E0B~gy15?**Y|c;qW`Zg-H0&|453k$)>#cfA9K&p$qND>qx5g{jIzmDYA;HujGUQ&wc zAF;j>hz8`JW`Znyc~jUNjUbQF$##L%k4fDCG*;eVM_Ysk4)lb4GdpxwTOY{Mp@x=3 zg`>D*PwJytTB;f^MU|)4wiPvF-s2m(#6!rVKJ9H?m1>v@Xf|vmC$&)Sl>$)Twvp<~ z)zxa@OP2;{z86f1-!JMzu2S(aLSvkWPu40ngTTXiFApTE6BxX*ej)U8f2(50exr-X z{T%ckeXC@_KkMfeEA_j2wWp6$M$|mVLCbG)x44)OCW~mlVyoY=S9(%IkKs#M6qwAF z@Npu9V8_MP&a|h!<%s9<96&&cv4P)S%3l=Pu?2dn?#j9q@&NtX4djzo)){ZAv`d06 zdTLKk+*zU0BRCr6uStz`wuW1kub;V?qY6x*@=Gt*&rA6%-&|OLC)>iA%BPawrH?g}QknWXH5uu!F=pTT6_Eq~ zqh5t~_rR!ZYexPP+m0;VozJ?3z1_^Nmo_#bgCj-Td66+Jy7$Pv9c_%K5|A`{(4 zFd0F$l9T-kGvc;7+u2e%ya6#>M*X&Uhg&>>;8UazSRDK8B%we{7IC4tifslG0x40C zu{w0h3dOEK-oIJ9BRvIFm{WjH#&|%28`Xd>hy03>TX79Of(Hpuf-u?op-k)Px87A7 zYzJjPnlqDyVgWl|jt(9QWEkIbnb4-Ear=S8%A3=>jww;Fym=)hqLk~=2sVg-Z{_Fl z;eXWQq#Xdro{!H;HaxD|8p~CVJytIh0<+jVxQ6W~w_r1Qfic>!TS6B&9;&Ch73_iw zwZS`4ZPq~Q>{=(#U*F0PHM6BLAx3~}OagVh(5j=d0e>`Ub=y{Nn@tmcPT>Yb!lK${ z-t46`E+b@>!^S8DD8JJ#kgrVHyO57G0V`6pyjIkV$fmWMs{u)f>b(--prOLyaOXe| z+o8vwRq`{TA%9XWY=QT8^Dz3`R$dWt^PU%okuySqGA)EBLp=;(^4V=>Koy!+>kTw>&F@ueSs=Rw*z~pN2Ju66yNm%058tMWAk#rc;t| zup*Gx5C!lYRk{as6vMpRHPnGU)LJ) zq$Iw{r_G&%`qaqjF_9HzYKIrowIimF_y9s!xtR{rVlaeZfJ>v}r|B(^FZ$)e`=wi@ zqr!X&FLAwb9WUW|oGRNfvH$~Af$8pCO5ZBE!1_?KId#uKH|Ni4nlZ4LD z9#-z4@|O97dEdzh3ih6JvN@d`6g%#Kt`jI0EaAF;YJ+rVn;@#qI1aSt6N1T^m~c&E za2ooNPnstM&9G&NUr^A7!|PX5a11zc7`qfNK5e1th~Kjs$6a%1lO9FUIT|NRBKSP( z2QQn-ybB>_g}>K{^#VC@0!tWpq6I`HBKhilhnJ)fDn0ZU19pN@{ayilh0!1iMnM>= zHDykGqn|uCTaNh4=Tl9*WV|50`$2s64#_WL+3s_fKsPr8_CfmcxftRukwUBXw5)Nq zh&sgApmp{p=|_WoKY}=MMfws;bSa_yA~7R+l$)m@8_XCY(}k+DQH5F<+9VeR%KHJ&R@GQpepgiu2*&>X5>v1%Q|c=M6UUOY}; zHD@Tj-AQ%Ze2ERHyU0w(Kk`I5O$|tuNqBZ%N&vN!_YW+ff@eA=9@ve%?-3_*jf~iv z!o`>A5G?Ir5cXfES`_Q#XZlypJJghmXlK_-o%O)%Z&M7vF6JEO@N3BOhE4xfgLi8& z-;96!wiGC(Yxli37>i0#BfIlBIXd)i+J)vo?pc(x(<|ELj&fFS!b^x`VIhCra&zHe zj|(X#w~{qRf;xZSt<0S%y3#t}IL5|Y+8Xb5av`{fF4Nav_}_h?VtpoVB2IxUIro@8 zMOeSkq4K`-{Kc&O4WWH*cUH23#e0Khqh zuy?S(i*yQtM0;VmpYBt3#p`B(?4B@)@V(H*XoEpLV8JzgJb@Wd<%te<01!NpV?nqK zbUbQ>D|=723_GG9JHcCnfInj{p8WZtWzPF-?s^ydG(MKC%N};F5t?(Wq0JGOEh@-C45DbVT z9zpNJc93riSPjUP@PPfLbRDtFKu?l`oZYbBG0|!bwL88CX^MOq64hA^Ar)Ok+Z#yA zw1Pfbt73I+FnVU46l%JdjgWN3p;@!ug%uisn-P4W|7Dl<6>fn2(u|xjc7su5(|xDf z5!p@&t=Dk2if#xT(k!6B1i$CaC_D5zSdFP4P@5;FSWHJsN-sX(@%3a!HeeZX#=9;<}yz~=qwk&dZN}cewO^$K0W6%Hi`4@d6`NZ^iYDt*Cp+ZK_FbUyx&|j zA9wo89i(bon=HIZ>fd;4&4?d28kPDN-*ff`QJU%x_nlf1LVK9*e-ov^1~=k`K{RO) zS%Z-w{;8|t%^ScL;ARGKkZsVpW=s-)~a~r!o4l1zgJ(nRPr=XyP=&6dvuZr8#HM4Sc-T#6_ z>dgn29RHh{Igme$9gMqOO|i8|s9gl$H&IGhHU#H~^C^+IC8g*4QG{m3mZNQbcuZ7^;Bbs?^c>!VM*z?iUf_ z%#Y9$7N57wOyi3-FOCT|u929x=s4W!PkLLFDZ4*wyz<l&8U}@N-z9a5BVn<$z1ZPLflwJbjwsGER* zqJUsljPgo=u3;CS=uQv%&;y7UjJBp1(|-L_%mJ4QNro^!95}QTxLagAQ6)(mkP8;rutBlod zi%4!A%c;Or2g3PXsMztquXye**eW`C>f_P)k$U@7j>_7-p#lLB{>d>+K{S}7V6cWjRGK2o zBgZkU=R+kbf+wKTXq`-80bpi$-?z*5&FeUoS;vSI8fTN?lZ9qsH*A5!&q#lwj!!1`T z>)&lu%ZxhYBwmGOf=qOL!KI(?x|FHMTc~Ek4aLFB3=fWzVcCR)m2K70qz_?)uf9F3 zpLPO`9Inj!_K}&!&MQm_DnCssR{mNupa)m<*WTsduu?-2se0gMibt0lm3D3~ZPbiE zSA-vt@Jax!UZ)Q&N17%e++5d=saAJ49B~pwI|S1{qhnS%`+zKS!nYk*rE9%s8yNmH?JhmaID&m+{jt>hGKD};1hTW@ zV1cOr2+eIP2>9o>=?W^b?Rr76&=Q3r!uY@SYJcW=X+kXMIjPiOj{`t$13iV>?K5W8 z_toU^J3R%qS9tE~2TKfSJpavaQPsVIPz2#^?ZF~>0=lm=EjXTNF@&uKEdy3;?2M!#4Tz-HJ{V?7#CH4p=vG?_WS)GLLI zA%c95@LwGXv9NYs$BGkMT%_N+2m!pU-=TG4Jd0$0touYnxLQQ_IFMj{2Gs|o_&GLM zc!p{A?@jAi(2P*Z2UgYM^qm@d*FFymJv(0s3eRFI7#Sy6J3t0K03So!>Ctj7vm^cpc0GUaVQhj@e1TjzPVNsVj?O2{?NXo?0}^`& zoB(rpyj>n_UY>0nb5|p*yVZai#F$jFwQ1BxEi?2ByNH67VnxGd+%Ne|*_S`b8!%W8Ko7xcTEvwhgK>Xiorg>ME2b z?CbhcIs0ewoEXchD)#M5^e8ztf;z!@0c8HgMS7gNe0F@Llakp?t8_^94zo_0lc)eE zM;zssHt?CqhTfs8Ou9{p_56C`@*K@4_7Uu)Vrwl3+#)zGlELq?_OINJ+&v+3U{6pr z#A|_<(?E?nNy}F%xtyEuBNJx30eqU@B}bh#L^_uqMR$8`o#V9#FRquJCPh!h-7JEl~EX;ul6K}@uYdT z+YzBw4jGNy%+F92kds1R_wmb(9TG;+mxp8seQT^Ga3-*j@2-sOUm~{h99gX4taFC- zxPyGAp(}5{RW#iNVDAOWco0oHls(%b59;iRs$OX-0Qe%JtC}z715npqd*N^LQfV67C$yd4!XJhrlyiqB1d%II*D@iE~{~U+n&GN*#U5c*Yo5=h6XoKc0 zBY1^@1d+eN0rA+zHsjFk=s2wf!Uv<@Ppx)EDS7Le@|ybW?a{_NjW*9WgjAusXQx5O zdd9Z1`Cm^0woR+SR5)Qiq?b_NLhg_d9}!xqtGWMVGELr{tGfXOP8-&=yxe&(q)a0K z*nFpq29iw!BdvIcgk8$eald4V+E?by^fE`wd@|IyXK(K=R*}3=DJ1EBm-ZaJmbL5rGbH= z;tH1WVvmO?p*!DtOG`5Ril+rk#E2T_`WdgLTx>q!v#sM9D)b;!sHqXS>=-77T}IhI z9(-OacoWGgP;OI*Z#_o=yOYwUfvpgngjoc;h8p;<21d5ynX`*wKvC0AXhK#x4>#-p z%RPo)#n(o}n0?}=P;n3lgQBU&qQBwd-C#YQqD{xe{RX~3T^+iQ6@;umHnXgfUcoxT zgaJF2WR_aCCR>ywX0_Ptf?611?aoH}TG4(V@!qZoP3%|?m(Zqoh2Q8jx!EdTmETtc9^`up=3}4o(`AW{A1EV(#HAID{gm1V{I>*A0OIt6$B5(rEQ6V$CejH9v z1$+G-MB6jR&ADl*o+wKgPf(#t28tiW0G*pDjlPm2m2#(IdaMGg==0;Wb3uPL)Y4F0 z7PnV_MJCDFN+${}{zVN2+K+FkR)?AjRnO_3bS|Y;>PLH{>9kDEP>eTJBVii(E>$#L z!WDO$Em0Zkq?~coo1f$HR-d9yT%+SM&_Y5gi-B0v>}IF{5|?i=|KBiQ44hs-iN?rn zu&9ZuXV}XKU!Ow~WLa|Acg49<+4dwoeLLjUf?NpD|K2)oPWDy^>Sr!UFu^H9*BE@y z@Q+DB&%r)aUpt(7)$Y6EuognJhRXO=!pA>Y!Q|sP9jM~gJ(l5L*hy2aTq79~unN`% z4A-jts>!hSW3FneMNyp(Q<0@XaD7LRH0L^M*afaNmy1 zZGr=+LSfPX*A#QtNRKopL2GE1!8g=Z@-YV-th|QcL0Y(q?1UYbx45rC;9Im|qy|O5 z7iIzR=V0DnK&%2oDpf(kVmQY6pRKa8J74^*j|9C;JDO%7%CRPHYc8Nv1m9h|S80AM z7WygP`pBy_VAc|Epg?NiOl)s9QStUn3f7l1nF~R5e3STk%Yi$xTe18O{|ACz*Mh6J zDqG_@Cs)1#)8t#`;t8E^01X5zic~*P?QXmUT7MHe4cO_tG=(=@{SefOcW z$bQ6aP{Kjp=pg-AVV6}c!VB)D4@6oAqmLJ8qn;}-@Lk>Q_fhfQ_7c+M*bv&Ipv;g( z7Wt$)_Fyqng%^rao>BO!;X#0mi^bQr46G)*m`cHk4FoptcmyWJN9js?2=E%q{7N__ z>fldO3Xm4^`-}A!UePBu{Bh%INvAdxbDpX`$TS9<8$j_j3@bXgg}^Li3!ip|?O&Nv zenHR8d2i&xR>>DJhQcNmpYm6gPQ9oc4qur-^;)1E>aih6<5yYRfsYVbH4$a$=J`D| zFABfP5H1J-f?!|HfeE8nR}Mg!J`sfFL4!NF2_7g9C5-zNLx-?k84g1nv74%ACp)0U zioTIBju=GT(6eWYszUQM^7;iPdICVR#~7uQD?2_r`k19$C80)cje1}=BFihk1Fxk_ z*J-JrF$Xp7S_RtT!Yw&_*;Y06j7X+`km0vFugyP#5q|+@Wq3Gg5CyS~rt?A8=?}rp zvr@AUu0_*GDNaxuV>6l2DzusB*!s&7cD@13)+0NEv>x+ ze^90Jemb?+huNo9H`n1g5IcNq)Qnn@Plt(f5T}YyR1bt^ze-zyh`lVl`;-7l((P7wLuf*~K zn{j-Rj;oz8MMEhI+ou(aXaWoiq~LkHm9@MNz(lE%xl2sVJJxLutF_y@xdhfO0Cg-* zI{=Z_bG-DyOG9_sKL7Y6vCA)@8#2-4Y>=K}ZqnN6AoR!E>tkETRQk)<)SK(0@;n?t z%)iYJ;K3B;mpAoUd<*f|S@6ea;eZ0Jjyb|&VgKGKAk)yg@aYB$v#SYhf7n%%1eOQpmgIW{$3UiVOUbvh@o9>D^4Mrrfg>&;f++aq1(H*I>y| zaSgPm50Vo9#YkcK+;uGBh-bL13`pOEX76$_=d4zL4z*C3<|6C3Y_c~}0g$E~X00^w z^x}!jGJ>u?s>T&A(oHOqy5*;3f>NbCNw=^q{#5<4=>T-L&oK(dVL(Wr3!)^fRao>I zdG#ST+mV8)KM+OKH;LtuJ$vK?2*QGBF5D*c5bg#DxAn`JBdwPOj=*Pd z497;nC#D|bKqLx<>i6>jY#A!m;eKC}wnP3t+ou`yBWXG`+BbxPdV*?@vWjY<{!=*> zytwEd*2>Mn31YYZf=5q;Uh9UJb^yjRil4J@PJ7H-<0nkiaKC0G~roBwSZuQ!aqB~EbrbSuBrh}K00D00-#T(B6;<0LM zNf#6|u&UqK0x>6LV7LTW-FFC^dK@O}_Hxg-n(B)(KF*=)k^>;#9(GEit*|-kfO3 zt@NHw>9N9v31{-3T?li8gR~dBma?U942sHQD^(y_#hR=?VfVCLmTPtK*^?ji<(5EW zc+Tk>s&Z;Ngu_2K>CL`kYga{}uwZ1UsMT&$s__ESJ=xz1Ki_&|g$bs18Z-Jr`ieHc0nUX`w{r6=ZK$m*;t&dn zU5g0%9_rV_cC-g@mjlHRwGW5qK12BDG>?bFgDO;h^1J1En!eoi;q!9pfRZ!t20&QE zY2l}6HOv}`dx%>bDl@REyyVZjWl}vZ4G7lJq!WT}au!8nIz*z!ix~n=uFqIkTCzMR z83;4NXm#8V4N$ad>YOw^g6e%+K2Yp%1x3ac+Un|La%v9+V0Cuf)0Ws0us^m{9AprO zg>3~35ay)SS9^k~iu;Mq=vhpi!Jc{k{{w>j{Stp0fI3T=M)a(jLwMol;6brCnp5LN z4AU*0DM7HytJ_f8j-pX9MHWmtw!FP197K&RO9*oIE9v;^UR1-FU7~7U8u;8>-G$X)KrA+_|t=Hv{qRCFHb5Ez=03th zB`^(wJ7{FPa37s~dLNF-(5^Lvs%_RTp_zQxF|@k9noXq%GSu(dbX;NN69|yuR<7m| zHx}CYS7ah8kr;il@BXBnT?Lj9En%C|YGG@?+JiMvU%L&Ew84PUqBC2OQ;rsB`T1lg zkhJAroU0Gwz0#9i03PN+n!2?`c!1E`{~+y$SoFdV=UMNwF+tA`i6w{rfrsV$#dn6c z=&*@lER${g1JZu`zI=vr@nCD!9bfZ?^rx$6?e(8HUa=`35qth|bD2O8kN-i{y!KQF z8$=Z5X8r5Fhm0_tZQPKruUui@g<0@0uFJ3|S@%OdZ_5UjJah&e*gIQ4`fn4)KtTER zTg6?ZX1qPY_?R`OK$KT4=RIWYW=5gYwr9R@se*E90fP$jh?*rBGDP0XP>awKQ`NNy zt4R$pB(J|hVrwpNiB6kVD=3W$Bv8++@k$Na<-kW4<)8>GGngM>H_|;`1YY6qB7^&j zV|b|)#o0s_C#NF9g8xM>C8z3OjcLy0IXVX=(RpLgG$w@dRY`4%7{ZnjMKMt@RFe_> z2kb`gincvU9C zqlZ80!=^&JIrTLaP_LJ8!zizNKy@CfucWTXtkPx%)?Z%0evjF#? zcY<`Y#pg?DlRPCe5NuXEOriof^0wx6=x81^qlt+}g}trimQvKGJ%FXiThvtj9-sZK z95@yA1CE~bGOESH#QuZ~!*I`rSPEbfcZ6wrIr@iV4#Pu@gd;f8{CgRe9voXb=&{=UF^ft3v~^tNwENG7lD zbXM>O8d2f9#Z_>%%znoCFq{{^TkqX`Yo_UF&moE{G`(E;C#!^RIHU``fpwmqGdK_y zr&acu-!;}?0DE4o@{<1Vw>2Pszi_p^7lTiG0RNhh=rernc z)0g}T23$cNyUsGgK)D2V(+AFgF32n#NxU2ENWf=a!luUa?LJ#{9TP)vm2iAkUJ%%# z3ydH}kNHtg&oQ(loY*bS<%|j{^*FMTsD3k$*Ebm&2S`d?KR>w0@m%0m<>mPPzFr@- zoo7Ip3ZQJLpu!JV612_b&@$;NxStB)Kr)!AT>e?P*2=k@Hrx{=8B7WJe+ZOH0@+tf zyrURvL4tUv?Syok%vQS{`=xOi(s|SpxT%JSZGjI4dhbe^84My3k`bS5^$Wc(iD zGpxld8H15VlD0z$?fvqf8o3heK8>Js)A7WCh4MEDQ&SOV4WdKyl9iTwJ2@on`@8wGCWH|Ca0o)7&Mwi#>P zeX?-HYeyv%g*1*yfjdsQ?Gh>hv+6~yUK)~}_8nXgK6l~$!&bI9gQgCgyPw103@pw8Zw@Ot5D-BUr_5M z$aBTgFj!!yHLlL)CQ74fM?#q*#JIDs&<&wrHG>Y@iFh%@=dcefBm4^${lg7~`*6by zLmXp{8YQ(HuN{7i1q*+Pzq1cn@bVAr|2<=xyh2s8hL6Nu*d9mg601P+s>e0oT^+%# znSAfW*fzLS&grZIkN`IGhJWDLO8@hF-ZKcoAZ%j9bTf4cK?sL@bGUmYM*aor6MOCa z2BLXlbP1XbRZXb(*CIMd%kvw3?5ZBTixgL5<7Y8w!Lhd$!OfZM)7`Q-uwY4uUdq`t zd?YsC^DK8CG^2%wq)LLt)6qAeJgO(=Y>)Op_0P25KYUtuk2s^WJ0?e(4vI+w3|Xuh z`waSkV1dd?f_#G(fAu#6!>SqS`!fSmms!MZ)Cn3=-L9J0WC*sCHJF}ZK}*64w9pbD z<5EHI^~q8z2cNoGc67+s7XCyYR$&mfAr&#s%=rBVypB;F0C-+kc#hej#m6-y@E9=C z;S`LL(Cx`_6XUnF%`iz~dcC-_oz&Ke4i4!VlldzHHA;x}B2mRg=0r5v!`DSb@;|vg zS}iXhu~kL1;Wm7iGg|_YluV0r3e(hhl5_e*`@7^le6#MWF z7^`c<@kJA>C(yxop@_B=G3WJSJhp2iG-q|whP4iuEJ-@szr{ucJN0_P` zywq1tpu405iPvPZ_&Tk|YZQx04B1jf!6(&+98VEJhLEM*@DfI#$O=Qp0Eo62HaXn= zq!L@v6R7l_;y%*``m9%MKd`~#R%ac7f5KBrQuVYs_bx(B<977LWz47}2i>0cZKb!w z>wXAPa^om~d;-uB|GzVMQ+U^%!e;iRzH6}LsV>gzuCYMDA2lMV`+GGq*b8ky0y>hk ziLKh%JN4E}BlBLCV^SP4s{P3%Jv~YZWmuzN%qPg$V(`9m+g^yORY1l|?Dw}{$c5E~ zIVAG8(|Ww`)7lbixEE=D8VMCE9=ntDZ^nE#L&7^HOr zLnrUGSVKU3m1P6fwA;62|Bhz*bj}ZvGTM;pHAD7k$=wL#6XQHM4~s32&)L?D|G|9E zu@`WgQ_^H&qw_}le0jKDKyBe0E*~;xE0{w^f8)8)TfiW+(?(9u*Nct{vsyeA-!|0X&S_|ZYL;z8Zfk7{a zU!?^h;%8-K@q937TE0Nl z$3ydVK7{*GwHM!PTFkZ3BKY!+pqmgQEkZI6{4(3@!-HEXKsltK|HNQ6n63&>JtVQb zLacf%eUd(UU0@_r=q*zt#Xz4g%zTjE2@Pw9&3=~{!RlzfRF zexjfOS6^DDo@hq0-2R{Oo+~5HeWIiweLh~t#t|xtBCg42T8LwK;Z9rotxiDy{WgYipr^pBfRSZ-$|&(x4%K&Fj7$PkR^K;C;Vnf8bnDld8NLrx#L4qBuY^#Z7D8i z?6UqyYyOgE2~($3g#S!WF3Kwk@a@giGn{KK&-4dij+~*Ntt2Ea~kGn&B9KgAkI6Qq`SbU_nt7R zG)8@-us~Ln$}c;aVj^mX7CN(oCA{2;igPXgvcqk(>xf}%he1$!x}h$@r!;nS1B z_aSp?PlTReQpk<&nI~tPiu59@%dGN)xdi_);mXB~co~47Wz~RvMshnK_Isuf!nZ)h z)vqF?-f9^1YxY12$5MH%|7B(bWK{|%KkU@tVGW4$RdmDGtX(1| zDlh0(GjJm}3P`pt}bL*(c?ZFI7d+PKaOy5?`1h?BbMsfx9-1{`5tp1k3Kq0)^ z)Bf}2xLL~y5~7(N`eqxgfhR{PF7Wr7kIZXMm|V&R8ZNfZ?TCTSAXgVHhMjYvl^$c& za$z`2fX=l=9(S;8@b#eT70Qr);lh5pK#gzN#aXbll#h`!c@_vv0D_@v2UW132oVWx zmp(|d$X*vir*cu&l0tP1PZ2;JO$|pTHcOlNTC!2u zyFeY%I_Ik0VdoOP*eliwaNV6|$^CiT{f24d>Z|vV9Nb{o`nn%cl*HR#7jLWo_*Rlm z_9vr!(2Vs~2)n59<0RL|@mDF1tHj*r*qr4SB$@d@H27eC!3+s38=$sUT;>^YV#ML2 zT8@lzK1ia{L2NgW2*K?A{6NKpo9HEA%!i2+KYW8qZssWCQRM{Y0q6yq250|b!6ah7 zmV~}=GzeffJe)`?r5EU#{DHcv66MC%a(Q*p)ElV2_lV84&qfBx!N>L*?OFMKKpCi4 zf5{K7U21DC3?K1TQB?xZp>=R6z?kV`P36(z)t%%3$_vjry~9*%^y_7T&g@ zx(=hq?jS<=oi~Q(dCvtrcX(Q<=92g!@k)PDK%JetOy|%Y0G@KDU{S2WXa(e-S&Y6z z3|&kjsDY+SKW3UCo8&hWy;p!0>HVf`4=sbr#bdX2tDiXY2vuB=+@OyKQL5^0t$`4R!CC z%In-Bt@H?rm7`QIV{!xHgS*2fhk)mY){Q94IG05)Y9gwIbIj}VMVBf-`!DCP3w6XJ z1l9BF%PYBNCp1qwy2?)1;c*<=tasCUQ%AftDbi9Tp$mR`bCeALNq-Y9FNAa08Q zR}}aUvCaDH-jULugkU~OKD-2IZ<(ZQo`?&U#dLyIg6M%NCgrGC|HfCJV{|V-8^OHC z4`Yc~+Ykn?H?S_fiB#-av#h$&F0AdmTOsKPaPGXpfLA3fzdxJ@4;phJGgj5qycw)2 zK_1A>?&qa(;^GdkVf_pYh2u)=~2Bl8`rD+5(-dMb&k4-{nn4zPC3)Cn!;3<(`!S^ z=eSyGJnPzxwB=NsKII#>{I;wfK<|WFtSYYxc`*nePxFA_qYoum=d9jEF{>i@?0Mp9 zX>?p)uV(Wu4}%fIE{&)tN>0`Yk)@~Q53-eOJi4c!#%!Z@Mh*}J6+j=txKWH`P%jvM zp-cRg19g`LKqlK!P66OF#(1_i)C;3$+AlZuaCo~{Z}PZRn>80mO$s6LG^|%ZRlSlV zuTJd^5)nz`fArVgTjERE`{ix{ap--wru5)#c5!Fn;49&$%4ye#W^aNz&51}-5rm7PYDllk9aTIF&(?2b0Nhtl@R*ol#c@;3wG2#bV$)?ng%#`w$V&a zZ4RoI!B7PgarfPdK^gbjTu3~_=5jm%`+Yz)TzUO&Z>Wyc0=Ac*-X7QmNs7L)0rVpq zU1ZTiomDM*mC;8^TB}_oBCMw5ff#r*rXefR(D@WmrhV6j-^m^R)f+YRejV$IinO`Q zXSV@)%qI0yu6tIQY0ecJjX*t|oA8~8Asl`HRuL@+KImNltg20?rfB*Bdopv)O-p>o z8`qQ{LEi*QDJQ7^RkXBc!#xO}35cpCJt<1vy|X1Sz|6-rzGO~=RhZ> zL>}omv~Danje7pD=#j*FC=w1xj{gd`8t{jR&a;357U;9s`H1Pe1m2vM@?v-q$#c$1 zQkJxLETiuJxC&(}-y!u4_n$J`Bl-6|IXf*^*`O(ZdM_?{&)PZqIX&^L06@gM26KY| zEwoIhbCHX;K?Jr0rGw!s2EJCpaQL(}67qlq{6bFaC&7vlz#loqRoJ(RfLn;$q1-A$ z?OrSn$2b3IvPErx>xJPL6#74otNV~`JQtQswDsp}DZzGKusxB!H~c`ZcR3ZxWG#R} zGcd{E?winNQ@{c|Tmp9x4?7hm>ZKik2CL&oD^%wvG`+fgkyvwNWF;I=A+tZb$t{1Z znl;4ZGB5BQBY?}QPWbx=(i$Nsx4HGU+4D{l^PGSDE^_2}h*_JZKpgqj&YZSbRcm(5 ze!4zUIX0QCPzxHf^!jkoodXMhMc`S7M+ETov%Ik`mE@AKMTyQO}8oIzQND-J_| z^Uq61p29SZ0bl-NRwp$P6-xZ`w6wno*2HvA-49~dP3TY}2ERIGz2Z-?n&0Vu9b=8DN(_2VhSU~zlXN%Cul zB`8TOr^!q#9v<~;blbLED#KBjAKNj|YbTNh?Gt%AmjUbJAW)Kq{fP zAO1ggCX%h=LUB@n5FYKEx)+)Np2F-^2zNcx1xI|L7v|Mz=4)SM#=K;J9O7DpB+g1E z)pfY0`w;5W{TY(&-R{Ec=M@dfk7KRFBYyRJkvV#(r$DpNTKDM02B*Ssk|TK?KVM5R zDKeRpA^=mPVw0>Z4hDb{x?5+p>^eXC;=!HR7iuo|TnyO*a$QBq%Ww&)0Kl-ydMRhA zTIPajrrY>NYh408@@KJ+<=2M7N7ANZuLv7@5HwU zbxcNNz2Q-4r4S4Ff$V$&vRHr=4*DjnR&y48%F4K4lP=a0_Fwdyfcl!|RAuEeJTF~H zhzSH?Wb<^^k4a@&N5EL zq@Vq@nj6-llBy0svNH-8kVoSYba|rk3p59((HZ2eLm%L8@&76iZz{8*fE?6iOX7&R z^S2Sg&>$6;ij2i{an)!F2`Z&D_cttY&Z@U1ql3i!^w{32SNx;S1#dAaVeHSFhVe;( zx?AmPwX{i&A8dlg%I5qOgj+m{K)aipwuQn$_|`w$@Y|}q?{Iak*SbJjFaPJQTO;5h z#|{yf6U>9|??B@~$)rPb@5~`DJho~Cdc#bI{~TDvp-UE`zr#kDyB&ZY64^OOh%j2o zZe{Yn4jUN4oRI#VaZS~qWgk+wi!cbqh(lFK25zGKOb`(m$saORVkD(N-fsQd$|-K~ z`v5c_TLJ#h!A8BZQM0|RRcz8g_%UiWdZ00FqgF35ol-7=^r*cqAqdh_Atv;x18_^D zfFOq&4SHWT!`dDE<$BGExJY~_Ppva+!8hyH|3+A~N5S0swqFB!rH?i57O(WH=X<6f zWrA;e=7F`g)uHNuh2pN9)z1l$hl(*9RGMvS@-RS&i;1VrHV|F1Q;i1N zgSyrBW4aNg_VynmZ`JtKJYI?MgQL#I6}1d}XdZVx5TEx+8(hL7mc>9We8_b$UZ%U8 zFUN4X*iYFzmOx$kxibg$wcaM-HF8XVBPzvKht7 z3Zn-ms~HYoKPR3CGuM7{XTf{oeIaEEnoS-u_DN!PINPnMa4dYI116r)Koqj`&x?sp ztc6rS?5lP1igJW0%R@fFGZ4|ZP|Wor!;LSd-=v9_J#B2KfF@%|@+s%B-#d2$HUFS2QXbdNiHZ~{bI>@8(v~YcxEUuzhWnG)`kBP74K_^HnpdJW>Rg|`IFlqu^ znp|6Nldz+eBHV{`H@;jXHp}w>&U&_Vc{Kd|Fs`chKt@9179#Om3AsTwS!e+kzb}@` z!Z=HedGRuhUDIuP0e~t9Mjrrd|4hb9bu5)~hvlI9tH4~F|B2E+*#grf$C(4PkIRpb zO9Aub-L!*QJtgn}IA)mjt>^l!>0w{oP}3)c>QU5~l;m5gJ;w*)BxsCe2)2t6K#i(L z!&f0!CTh?pZCNI-@`o=5u+4jyN`Tj*YgR1T{+tX;f+UGAkKn| zl;oHT$gxYcBG zl}<7HRN{}ybU%dH+%$r~F(#Km?rWg1e~4;BYWB<1si! zmFeDgwGdA)yhSzazU#v~!hb38k8daF0y_`8Z&o}&^)3)DS1CAn!jCE5w0Dv+Pvljm zFQ-HrtIQUu&%_VXPxB2+$MjT9Bu1F~oUq$t4ed^ndvgu?}Obw9`N>3mpgi$3XK)O$`3DtUB>xKMe z)lOVhrC3z79K?FjQk1+w^C4y5x_~klRpQd+(ZR44WLC8~bwBhLWgSFmj)wp(&tcs9 zD^7CqWZA7*9r69{dqJ}604O|K>$5=j=Hl)J`JH#-PF4ewQ(i~lPRf#PoDc^b}A#!dP)9LprpVYV+{U>C%7NEnu-5>!5zv`a|M0`7r6dtEtDDtcV@k0KrYe;X%m#AJKHas6$KNYw{L?a@VX>q{9?FNK zJdah{PrI#L^0HEUj+i^M8ZWKvbt6EHQ`?~js;sy|EoNu-cZfOomS2uck4l9Sgv^l^ zijXjXI(F{Qm1g$f10xQ~XJGLYoPQ>b z>!Jn*G481=AO8jUKh;++zA0Cp%}BgDjchKorm}80*2Vksz<@-q>PHHXFD5`yWAGv~ z<1($A<18aa$^8B~uciCxyd3_yFG(O3TOjO!JbK&*f0r!hN7D=DYkHv|FiU0~e}A^GCD53Z4u8L>-@Rb{Y3 zJny(C)$t%R0;$jyBT0%)u>*8K`mYX^A$+8`j{rn=(ual@3?tRNW^U4Hy{)Dg6!=cH-c%mzAJn66Lbk8VXhJmf-B~Q^5>{F zWW4+1kLY7RB<3^!;h2sa#jN$3Sa5lzdXWp-Ub*YHUfDr z`E~g6!sn?Bb<*Uh1P|k%W4o`k1KHw? z!?JgO5+erFeC~M+tsOkwx{jKY)%n+gh_F&fCppN2 z{eVI^p$auDrLNzo;hbc6eU6+ub=&i}XG{9Bn_a)bT4T`}wW7(aoUv*QqWB+4KpZcP zL67!vix}NZb#2U!(DZd)j3P;TY{8$6dguKur+`FljBZ4m!8SDU6?B{=j2F!mi*glu zEH}T2Y3hTt*1C)i;&B`(?h#2}Lj;wUQVira080XEY#(xxxx_ZGRm-<6Qw@d<5_X|b zDp5e=!}Us&WHB5rmz42 diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/sha3_384.blb b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/sha3_384.blb deleted file mode 100644 index 802759adf6a77a96ac1a1e0dd232954ef1dbcac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45583 zcmV(nK=Qu;0?c4u=ks)zJk+~A#2zq#G-sGefA-^Sxiunz-{5@*{8J36t&aDq)o%6F z8|Xb=R5%9|?$<&hCt*8pQ^{a1<=-Wd&&10f9Shj9hbQp*Q(329cp0fGJh%A zQFpn4IcrE5(H=ae73`CMNJBhR0}~b`zyckHiZFsyb?DH&FjAl*7z3E}%0wf%f)uvC zs=^$I2cpA2jFY`Wu#(Ih2F~9yB-QO6!k2_ZPa@!oRjOE2D^g1W%{^UTX$P<899?u` zB1%7S-Ggl)^T&R~*`l+mBY0A;1`enhsX~tH4iXt4`Bgwah+U;O-hQ)G!N?3 zzBPUycoIRFt#^P*sB_@Pe5N@9Yi5H0k9wvuO-XrG4x7#fOrhcXm!k_5dL;AqX27Q{ zaWszJa2)c{ej-!DO&-IxN88Tw_<8i}h#W{Tw~;rDkRG=s>RcBi7RJ^F;IDo3-+y-G zkj*f%y5B`;UtoBljbiwx@Abyrb-2q1KhqB8jE9Ua#fq&QUC`?a`$uj8 z=_T@O%#q$=6iL2i1jPh{3a&XomdN~elw}Z6HeF8X2LS=>n`j7cE~xmcdx0LPt&>e$ zn_|WaM{!{8>sG_%PpC7wh3}=3JU;>@^ciMM?bw*dpJdl9D%7zhql@4m7)HcG>hJ{} zQEkb9PVqdKEKw#6-I05h+`x^vlzmyv7{Hv5J517m{b=a8GD-? zwYno1y;XG4-yw9b6o^4dx|=UVZD5`9K+ZE&nU#Bv$Ov}XpoOjoNe8@HVX_PL_R3h* z+Ovw=Ui^Jj5WC(leuSnZs>&D4hWY4`z&)k&!~PpB$Ur6yGD zavQU%xn0h*sA_8ZlY(uzBT;^mk2B-@s8G~aVDE#uhic5PqN$jAB})^0ZWIb3X&w-1 zK{!ZY(ZKqJ$kBto|Cz0wbt@)5C~HT5dGK)y0RtBSbC-cLM7f=>JGZgCUX5}qtc8?1 zfKp`a0vwfv;2-{NF}qOIOnJ7MJ#uG(W7|hbN1#(@Mj6pq0czVMKU|Gas*?2zvu;

*89|3zl1{aKZ455l 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 diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/sha3_512.blb b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/sha3_512.blb deleted file mode 100644 index b02800c0fa098b952122827198d2f4ea5b562004..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49918 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 diff --git a/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/shake128.blb b/third_party/rust/chromium_crates_io/vendor/sha3-0.10.3/tests/data/shake128.blb deleted file mode 100644 index 58fb20814850605daf4df0664f02ba562e2c945a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164673 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≻N6>0s z1g7kcSy@;lP>A|~b^x(34%FU9qUZqF61v(`jx`;uWZf`B=k`^!5hNUtG3_U1CQdgj zZ&^cGh?YM1FqlOkDRv!0u7z}^+6UZ&^j`L|!8 zRYQ>ueEcC#CCdB9aoOfU`eml|FR6UwD3J+r@6L=P|FvqR?8-j=2;m_m$fOgjrDt3iL!UVbyp5?Y*Bo*gsGZHbJ_nkX1nmca=<~~)KBw8`h&tu6Rrk{-b5|X9EBI2Y5krD{w^x< z_0hF9U*T*$ou%>EI&0S%BPAno(lF8u=%;Fd4)T;~qj1bsE5QDPDb4s<1rtl8_r&*q z$UEx2nZn<@ zvGbS;7y!LlI?eUR<5knlM9M)bHD&wQvZ?5)-^;b14Ae8wOB)k0O~4i6s)QfxXu;yHZlfM zT12jcO@goh@8CmG?pt zOpbQK_=d&Qzd2b$!L8co=XKdN!1fgJKc?o z3fn9Kc{X>2J#Vy@fjx5FL0_Kbn`|(yz8m7qU&Gn7)J1B>Tj7@uSX20XSH8lD>6QAa z|M6<84$5BcgBgi^B<9wSDY>YVdJULyde#$g;#?04XqQbvtM%K%z*;86wY^MW_0sb2 z5@vO`h0H1q3(>Og!oSf+kgl~|vVl`sP>CD43Tgr;m{Pn4*6=@kLbT$v+5iaV%)qGq z-Wh>e_M*Ji7V3c1kB;UwfUEg=fKv*!iToj0a9*&r0bOg7)E!NjR$;!-e9`1JmBFdW z0`Q4;@-6{_T++#x3M~ox3dW2yDE=!+SLG<)t1S~G+ZShH?V3FA(JAe!h%AJTnM+02 z-*=>mR+|?f!Gn-0T7H2RB0a;+59mlHqKzVEgG~zwukkct5(C(9PwRgh;d5@uhL2BU zg_yll4{Z&qd0wboDOB7TiYK8;tiCR%&EJKy+@CG>5p`1mC$BY>>Nyy1niw>XonYN7 zGTR`2Q<(Lgx-?Z0*?EQ&)?*mQ^H54d8VtDU**Fi2EsxLH){Otbe9y5LaGO)oWMZT9 zM*DnuxL$_8Cg>7Nr(jD={$E0Uuc;1r(6!-1QPnS-j_zff zRN#LailBmlve;)V)CDz~XdHCtOCN7#Q|+5kgwYPR2(x$x<)|dX@Zl0@B&_k0$#!`e z@dplf;`kaHUR~P#&I#UDEUFZ6ybvSc?YNL0xy<{4GiL8#-p?S=zO_>4h(4qSGlQ`s z*-SO{&<$6DePG|SRRo2%T_QC=3TbA9D4Aly_Yx<_M^uSnwDV&eWopc+51O(SN2!sQ z!!Nzm5c_@aV$rgbyAPvjA-?7brq{yB)~m9I>nR`rJRX)?-RD}6q!k#2P&wo6{_&&T z+M$yCVVJ9@z+)Ln@jxjb&HIfwdep(6aklJAY(HBfp!mDM_)_3GQw4nLz!)`YfmS8; zX7Es~YZSeQ(*|}0vz%zi&aGxzv_EYoC7}i|b{+d*CvK^GCduT+Oo@3$e4?kxX>V zr)meo^r;j>x^MBdq9y^)FK?_ z&&S2{l5*I5Er?Hu@wl_VT&dzU?UKjccm~a_rxt9%xe$G&=2LA?@e#j~nbx-|!F`8A zBi4;}uEb>z8cPOzP$5%dAR2#h5o`8iI`EBgCL_apOIdiCqKuo>L7W68XsUY*{H#phl3?PZ z!|0X&S_|ZYL;z8Zfk7{aU!?^h;%pWV zN7pnx(*ID0482ES9{y*Vz;aE-Jik;thu=_O%MTI9hUs`jpex$7DAW2_klV`Lp55}^ z0H!&x|G4`s-e*5%#Y@#x=Qp+UaP>GNu{EpV$uWKF)`Pno^koEM%Y0ov{mVa3fPJU9y20!5i})570Jml>s0&660Y`lA7ArtSrLPFKv! zX^Kk@#1Zoy5%6RnQ-}s)>plsOi1$ooB35an%#S(*;y-R)K>4G`{3}V5cr946e}DuH z*+g}yS`@r_ENg~RT{WDmGIUNW+enb3lJ10j22*6ep^Sys<0$2<+3-$kWkSfeG^68r zSeV!3kNSp&%o0g>g9#&*Bbrs^YQc<6W2q<~xUR}937g!^Wz8d;zFBIDO-aG@LhKR8Y!0q@t-wK3)ikBETJV0>9#PXF1hMBA^ zhX6cq0;25gHnEyLaYj#ur6$nwsVt{&_H`~{11Ge|PMltWUx#Jpv{E;0vFctiQNkX0pUa_c&{GD*KQ9QIA@a3Z4AiuS zN6M{4L{Ooo4jj!E#MqmBqUH3$saA@ltbilDB7_|UK`XQI3e@xL{eK!K)V8Mvb-@R4OLo&W> zyA^+^<}Cm{kR&s4n^A08(;ttMT+uXqhBb5DI&oX z@?UTO*C6fG3a&8o0ISYVrK7e8izhdIcV~7hA`PR1FpU7DK0BVO7@5P=;$iC(EI|UA zz$Dj!02@}J5^^TPQF;Maf(dALWT?a(ew5{P&7NSwDdcusi^-D&ih=7*ntvZ3xsJ&dF!2opjitfJq_8qpa+%%4JU%|7CwbCiVC1N zW@M6q+l)|T05J-);u1sj!pvOQvuek~Tq9Ej=CN2?Gk8ds*eWeC_GH;(t)nBU$s(p5 znx($*xeRM@gYo?i)Dnv?;NdQ|v|$%)Qm((&2*3<|d3lg=t1#L#%9^5SGOq3oSXl+T z$W!PFr$%sZuY2VTkiq-GjwuBNCw`l`zp2M(=~AYQPm`cT_AUl)VW6!r8^5_B$QWr0 z_R$u`%je%0N`6=3B9t&VAW278vn5Kz1O%t_rqTIgPF(Y+a5*b2`TZaM@EXal+;l`N z4z}?g9;?NYaJ1TQEn`;amIu~GEC{CZkyN~`^#9i44$E*37>-gqIWXf~iIA_YAwmCf zkt*8<+yK?Pc-Q<@kVbeFx}QeQPh71ukqTEvhuHV}!uAU^)Wf=MCDY{*i-jA@bHT9y zN@72a+=>kcts%5uR6MBX1+#`t98cgRp`O+I1wz}P!=K=&ErTX)oDxo9-LVJQ;Hy{3 zaL?t3ovNo703tw-dYU4Emc_@cVNAJy1N4^4a2$k4K%Xzne30G=4Qq$ZewP@*>TI$R82l|=>G^(LwyYkU z5QhN#-mQZ3oZrs*oExjQbg8J~O2w39Y%$Ovq|GbBRZ9JM#N-qAfKQ=ti=RLM{e})O zaPr~0p6)mWH7c!TTT2RZk1b!!LnJsQybaDX%5i2U+;-_8*Clo0ZQXGY(D{+65&*Rm zuHrh$yl_LIQmo+33rQFqE4IBh={yT!ddi$?w#Z)B4Ci7(oR20a2oN%az^9TEj}Yiq zj{75-vx+eVToH)6Su{>+D|6MrN~I(PW=Vui9j(m=(_Qu0QR}b#rEoid6+WgXvAW-~ zh+lB`hSN`0Q2uk{X$p##VE|brJ=3eT`g~N+Zg**2B&JzFckWF#bNT#M#xKYB5YLAo z6u_t6iyWq|jPI)6uU}0CU-xCLL5CCa-3aRYUKZ}z{xnYL)HsjaA~hdlgFqLxIphBn zKRHWVbkJ{Q>1ujC0*}#8Y;XbVdeYqd^s+>Hp>v|Hj@wupTfK?sq-g#MI8b#kxp`fq zyzFh>yy@#PGVd74!l=16q%p{`A^Mqb`MO-?BA9DuieAZ@5IT|1GZ}6O$SuZRXs*&Y zsWEDE=N$E>eB?m6JKKa?I$%?t%-rM~$0O{T6z)z4FJQpFJzh}X$i5ziseaDs*p4f* zqp$RTy=`W7*dG1|2$E}ot1(JaPsc?G0b)g~@X1N`JrQ^A!qvpV&uyY{9}%+;89)u+V0T+@UT!9Gl#DBy}m> zA88qju%mGYF9Ib(3jN>KO2PN2@Ne(lfHiqZ9gFrIY^Y9{TOPcB3rK=1i`ty|s`p!b zGsV+jRC+YVffVSdl-5|}@_sxMej6$vGLyg+ms;ydt1(>^AS8BpHt*ye-1H<^#kC`f z-Ul!$4%{fE`;M0{N6q#(osLYtKI{t>*#AEGf$Mv~h{>@Ky8GEqAR zx6ggDcG0VGkRvW|CHMu(FZuF%{=yDKV)0b$IZX@4SI|Yrn8>(#0N`a^1c9g0+51@8 zI_<`GwV;Op%Vq7|p4t1co&(*!;?V0~3?>lpuAhm;3Pw6GJUr{xLq+qS9OvLm)vxhu z71iF?o^gEOe#-8fd+~%D7ojF=Uy|~vEo=E? zH0Xux&=0XOW*62&J0zJ_;Z|GcE>wf<#^vb?M+~yyi4_eyJ8=K=B5^U`-=QiZNWf&@ z$TtG~MlZ4!T(8^jFrMEVw}q|S;e2jw=K{J*;Ub!Px4sf12IB_lEe+=a55db;k6x=^ z3L!wS5LkWd-Gl_)qQutcD5UYFQG(zYc%1$NU;_bU9bMwwSpLe|nw}IT+P@zF>H$0j z?>%G@Kl4%X2^K?)Ym&CMykFDS%Ct6Vp~eo)If9%rc$tV^+o79^n@N&@Sr)`#<+b-O zQzR`QZ7V&asdjiz#0zRq56$O7BvV#Xn4m!U9^*0x(zx~11jsn%cV`-*vtt4$qz`&n&AiD0mC7W4)wjAx!2#0l5Sw5gxsYmmJmTR z7QD*xf*X=ybnm-)9Y$Y>eB%NOkc$W9MWco&J{S3bW1fNM8v+BP(k}8dw6f)s`r8Ch zKMed{t#k)hXCj1HvF}V>r+pG_ZMW*JYAf~roEYU|ujOYQ%(f4W-tlNRTjXByqmfl_ zMzY-gpYfh6BhG!Iq#%7hUdP4}DvBbm$!A)KV|d|CTl=j}hX8s$Ecam6cdJ4YTgQVW zsN^VS;=xD=f0F+v;Yr-G?8EaQoiG4cJ(k7_%)4WE6vP)>4YB!xshWKf7j&P??sag!a>ISvS&H~4fI}}LX(my(S)*qZ);Pw(VQU?ZRev}3*x&-$% z&-fFiw@?{%yM5;eN9GyttxZ&nx{s(Bp!Bt$iF87cb=*lV0Yo;;?sxxbNB%bgWttSa z_@Cb7UG2~0&#}~9S?*nV-ROK6dePud1|fVw!(S1F<~w3uFy?$yccB>xVJ)m>Irl1S z^lthVbkrXJ{4MjQ1Ehdac$Bz>R+k%j06##$zdz&APIj4gCP9%p&Xi!Jc@&3}f5yp6 zY6=M)Mp{1dPQ_Zxi{yqSSV-J^tmLEkV8`DB2e%KiJ%MEYKkAyzEAvQ8tnT}?(oJ{0 z=T^^l6ud7@1AZ2iJ_tj0mD=J2$_SS$=tK3LV1p&c*49fCVMvI3N&IoG$GUh|$|HyM z7NFjS0P#y@Fjdew zmyV94X*S;dYHu`#tGVIuOJOK+4|Oq3_D2R84@#`ckE!(G0E30*LG%x+(kQvzLLM*} zNtJR9Nf9r^DHd9*ZLP4+w)uwP7-rEp-KeFsWorg4bI;4jxQ8_f{-S~o6$Wyyd;#ju zU6pn0YaP$=^^V5(Chfkk9b#HuUfV`W~}%*1^o%&HFR07!^_EN2R|tcARB z(aQIsz%H}Lg!>qp=T`2KGZ9iUsUZchGZc&*mr_xRp*5VeDGPILJru?HkgYCH zuqqdT<4w44?mN<>sr^b(Ds3q)XY8{6NNfI*W(iZLRD}ObPcF(U3h?dC)H9rGF68Ax zhX4%{Xb9~p$wiNV0?!vIX2{y`AVpD*+s}vnF<&w2cpP(Ao!P!>FaY<~<-`D&4NGS+ z`3-f-0p(uaLk)^WnwZBOoZ)NF!!*C4&W;$T3Q*&>mADZ8GIP1>edyV@7hjjdFR)i< zje(mHG^{Xre{c7;BF;!*WH$eNI7Kii-Fr3WNWn_SCF@BBed6%n&eF??tZ9hK7mjk! z(Vomm7f8Mr=(?)Cy4$!-3oj~3#O4eD0glUI(#<8AToU*PhM z-78M6UMg|l^p%i**n`Z~BI+I0Qjw*ybhI-*wkA;3TMXtN!FC+7)#^FN5;ju_Q+XKc ztZulVzC9Vu(DN_KEHeG2-nNdZpY`{)Zp8h(FN%ViOEnUuAVjD4#b;9^cG+>RP(}fS z9DtE&RWl}S6roDQYIATmA(hLtydf_4Dj4^cF79VI?;2*CW;-)%vn1_+j5`0~^OY37 z&0S?j706#cT-(_KoF7=6(A8tAn8x~&}OAb zR172Zr$E>*kR)vxJR+dY1_8nY4hZG&sjGWNjo?!cP_b6SjlT#Xdt^NMILLzN9%X;!S!-tJcjj{cL25Bo)Z**ztXoN_t~gPv6S_>7Jo2>M z@V}^Xv=Nlc1-nibb_y6k*fcW%fF*Vre!-q96qDHW`-cFAJ=9Y|;jcmVg26cMjjxt4 ziy3pXbPVh1!kL{xkg!~KFzv{HnL_g#2$vGSD{x;QJ%e5)hj zlCw2=7T!}1f8VP`(h+MhH?X>Eyjlb?H&?Q3vqo?+*eaL;USf|5JI%5*)aUxHy?=jB zl%mAly_9-7(&le{MdoaYssnqKYW974E!LLOG1C!Qwc;1=N|72Qw7?RrXB8}(AHRja z{qJQXVw!d;(qr$PJCc^BcQ--Ayb|$C!SA1FQrhZe9f*jVUnsJQP1D1l`*-HIdE{{#Cxz z3SH|5DC<{Nl+^Yset7}opar7_mJm^(A)ln4CO(Dednka;oSdyU_1y3Q-zHzQNC`af zj^&cZZ7bb3kbPv5uwL>`mavVacY*~yfYtE*(s(t`h%h$gHqLhb_KBtEy<}>Cx7SYz0h6*h4q-=Gx9ffB6{CYF zbXbtF?;d*XcovSCZFJZtN{QzxU@FCyS?nrc!O$SO%yg#_)FnzT%wLZNC$#q} z;V{JokodVAQk8poT@u;}z0?gsba3dOD5&7HqLpNiw zeT4IC^e?v6cZtT@E9lY%>ezeS!}@B-U(7ymS01}AAl{OlEpqX4Lg$as}Iif=Ygw4-CGVVc!`Lc?yvS^ut9wig%gHm}M1<)M5c z;wrV@$h(I}w(IeFWA-+OmByiM?gcg^B2Iw5>&-4dij+~*Ntt2Ea~kGn&B9KgAkI6Q zq`SbU_nt7RG)8@-u!jHvTd>}0D06)_Q&Z{i1uolCa;ATShBHB@x0uS2m!MGtnTO&o zZ~0#_?Znj=mT zVfL92)4<1PINM9)NDiRryQ{E)LWB^*Otnd9_uIJ5<1=Fyw%8M?s9EH$X}`^dT_zsL znpDLQ#N97w&0S!7DUt+bPXXRqfmrh5yZo{USMVvNdCPX2KO-s^^+u*s&`d@YGlm4+sFg{OjNTD!zC@i9l?dwm&|A zd+3aE&gxX9Qbe?Yhh4(QHrScjsVL6^!nGG|ip91|x_y+Kmrh|nLAA~sXnT>{?#{Mq z>!{9$nX^bul2z43S*@@gmIn~gnEH%b81M9cGnuI3!-m*Ky`^qlo_v&e-BvtM*g)K7 zO%PtGD`LiFZY<3)m0st>I3;T$bpvhdBY?n-CemykV~>8W67}d)pL9`g6F}N~7NqO= zt;s)W5A&Nj#uC&ojZD3EOD}xv(IQY%co4*pu>XoVk>iq1uE0NMx|wy7GSCdwfiSx} z=_6hgcO+s^db*)5!lyKLbmT-73gG)?oe1H^ZS2_A>ggr=MIB}Hz%Y&}L~D-IhX9=A z8KLugEO5s5LBMwRhv=&&7;gH$w$2#qj&-o8?%oFdc+)29v#?37NKI<@vD)g_H)S^$ zd1^G?9lZGf{8_S@bz_+A&IUYIR3Kbm(rBu2ra8l2HPqhg`;E#MXlq!eIq=$0;ir>} zN2F%ZJ?8`)QIh?y17%0I@-12;__nM_=f-<;a<2|GjQ2e+sUoX9=p&|!mApDsJEAt^ z6Qj&4F@fJrHc3Z96QKAMh&Ce&t4h}*vZMS&Y<X%Q$twYydIn2f|C|>YD;mNb#wh zNknqbL3)5ZX|w-`fWXsaQ6Xmc<4>43wZ>^N0eVfN<~f+q^a9nVQWD4nClano^t6x; z{%oEe#jK!z!Z7CNgGyS4UoEE|?2uGKc}1xc#WYn0?lR`C{!XLhh`I+wU6{#BP%|D`8baEh^)|=?(mrtAG#FUHNd5s|tgp411DQ6wIT8JHh{J zekDeoXGEbFX`DzNPTk;wAs(HSr#cKN{>`#+=UUJ>?$F28xK_b-j7yhEvRD!EYaBp~ zA1*&D{m;ndqbas^L5jRc3EbZ*JWqytx!}OAD3VXkkbox@{Zu69gTzwEjqaHzXPb)j zBCE@+@`Jeq|1sgp#f*3vfS+a6fPF@CJ0SLZrVzrnhX7=OXLm~psr&o=H4stJkC77A zI|gg&^#=_%fEboo{=T53SRJp%l#aprmhd)C^U?A$KK@day>`NeGX37#Q3sxz%3L1) zmG^7SMU#VToMhN7*6jkV2VyJovG?$>bB+!a;Kz<09QQN7@)U5YJ1^G-S>G4FZGbk^xma@H+yJ=JbXsQ}|`Z5R1-d zEKRjgJRO#whrPoP_qUCm@QU6>^-lK~2tSbK1)1a=&NLAV@4hi!iVL|NLXGoU^_**hA|W!ON7tEL{po)Rwo%WhNw8r>i_F80l5UK_yTU2`jG{LWG5}0rR_YeVM zmFic_Uod5CR;F(#=v*XLdfy@>0TGd)MZ!Hqk>o@XLz1^k`^E@Z=NYDZ{p-Osa$V_R z?|Ol&kj_Dp5PDpwN~^!w8NAzqaOek~Dea`fE)xnL1a4Y~r1H)CwA%XPH^Ke2z1iNg zA#hAsU1Kb}dIUH^dWOvRS6EiHHL~d{ICAo})5%4_Z#74>cb-?6yn={6g$0GD`r-hj zduac<yQ4}#F>F?2a4+| z8&dFlSr^{Gr@rhfgZFs9v0UU6$)qrR%Y1{#d4f$0{LD)_?8O-}Z~C)S<9u1Wng71D zN|nB`+R|7Dg+RCBZ7vG`NTTUY5+&B?r7#Pg&yNsQ!th zM5;AH!m|R=x%l(c9~_nr7-yvZWYzW|Ze$ssJ!bw((ki}tBkz|ok6+td)dHay01gHQ z(-mOC%hbz$zmTA+7$(aytc4Y8XMvc~CG^#eFn0g=f!XGPU9N#1dIT930^}%va>-gr zd@aO$l3RNlc)s&Au~SxRi$<)EY`}I?0O@eCD&LL``pl-KkdlcVbL~~#VoD@rP@lD7 z3*xQ@mI-}UMa#+QlDF~mkOl6bt_q7)t)cRc!lgteWMbx{x|g5;>T)LmX#fZ6f7Bnd z_&fMrUKy(t4=?_0*AE$+d6k)d>_fSVyrAchBtp>fPJT-$ii7y%^(cRM^?EJ&QPwNl zo1Fdg(vJglyVJC*l~P2mL{1}^hau&&#Pv3)54&*`-gcc>b^ysGIoT{bCLzXo21b*; zn3KNK!&9$QM{s*(hLJ67?O6k>v>m+Fw7X~TDluP+{UZlGc5z;YpGQsh^~sJr9%T`G z7(}o*H5htpD&SP=}xW$j=VVhDr=E7mZ*mSX2m5uv1~`1 zEqi0<+jhz)UlcK&tijL>2&dt2*>h%NiAnws;!;G7mr3jpQ3dF`NHQb`Z>bGi|zK1-6Ew zk-Ng$|7f_r%8AnjiD(7#(5LZ*M zaWIA+hHi`E&JN$FUl=7UwaQS5p0hM{$h( zvd?a|RUAZ|rU5CDX5D@e>!e5Dj4A14HnxLL7A<*)+4WlzTJ@G4{VN~;{iOfDFjfo} zTmIU(&I{!wgk9^6#t;Oz+c-vY1@+wfG@`8jmcWMq0VuGV0fAFMsRsKBV>ByCcBu&UPXy* zO}MF$(s3jKX-*(6^5gS8@e&TH=pm?d=6^S2iiwQPb($Tv`ft_2M^;mha$H7>)4;Zu zI(3rB&j69rM;A_wl}=Zc(_qBj9S4Q}MYkQOgk_wVy2AioTiA#fMFUy26%ehJ@oxz1 z#!R_{FAt8O1ubWJl~b(mq=Z(d=L(uR7CbHp zpC-viGu>nA!P2~^2q8s4FV|vbTt9Ml4bSmBr05S&K}ZxpRJRmYGl9o<3^U+;I(T}_ z2QNG|xmQ2U!&1$MzJ^m_jTN7Gy76w$Z;ml)m#p7Q&Malh8_AC)c@+HVzGCQ^$~&YA zn5BCBJ!7!2xhrY?4e&)Be>5p|BdMKOT*?L-F1F6?h=I-^R~IdYopYg;9%I#VVK_^G z&b37zcd%^m^`Pn%%8-8H!hX7k0Q(?qfT|rT_|9aB4L_(x0QdwWs+dG~lJ_$FOZ4{DHj9mu*pn=+kdE$Bj)8putL$aX}X*u#@V z7iS=0h}B`QS-$>jk>h1SI$t$*BBpTSE^`5cHIJ5w=MNhV3CfuykTZEXPf=h4<9mPx z0`0g-5=kP6qTriGy3eEZXMHOqU|Lv9JmVKn%^Kw1y~&)Kb?SdkcMdM`g!lpE(Gl)j z5tR!mH*fKqFr^Gl`8tB^i5fB=nr@-s`EJ@Tpu+qYZBbFC+ULnrYO#BydgB__n=1Jv zj#4(NSl75@ASDvzHEp6M)pZQvECwety>qt~I1=yFQvbxw*yUjvmf}3XrGiXa&t1+wlG*}$X0LpgHa<6{MWr9jZq>s3aipmDd#nX6Qv#WT! z5p*?7djF_UhD1$1$t5_-v3LSLM#tsl>M!mZmk&YHbf-V2)OXS(@Rg`3u8s&b(U;t2 z(cap*LVdu6rm0*{23+=5tr14;3`OpH&!1t1HHQLdUX?k?Ay6JOIKrmidtW8HB#u^p zA#)Z?+`Wyj0WgQ0s5UId$|&_Q*d1VUShj6go~oSHqA%A;3z`ATYzbJxf)DsI>y+@| z%9Wdw+^$xn`%;)630@aNr*cu&l0tP1PZ2;JO$|pT zHcOlNTC!2uyN3YlbTyjeM6zx*Gn9TN&im*IlU(P{4Ox90K_yf#`|)@%QsDUtKrMKP z%%%Bk>DY9}0J7jFx=wlRLVrD}WJtd6M*+foqZnX$0aocd5~=hlDX93_cO0X;S*+j; zM>3c>m)xunM&)$to?MYC)Z>9L0my8Twm4pr-{~*)&yZy%fH^8N_Mww{ci)?y@>OO- zFn}rCTVLWj$+c(Z$Q=%lnkSxEAzdO9F4#TKbTDPW%NFZO=h`wj5~{y2oDxbQm;bsIP&{Rw}) zHCM&C$ztjIDHmNIAbFqmt(ZgMrM62hY5qC)d@UM3)2+B?Ef;b9XKBSpb>Ek;mQED1 zvnDnzmy*E5&BJ>CFx))=dd49^({S*ZPfI-(xPR|}D0wWYEaqYfQrBijMP|Y2ZT52W z!!^GtNg{v-zAG6Lz}^04x@Ji0Zm42QUAx}L3(%)ULruj%OnS%M$w8O+#E+warReAX z(Zf_iz)s>fjVEEVWO{ZtLNfr&36Tq$PWcTgJ|t&$T=`r~(RZzLo&2qS>OX{E3PUtap~wZf`I}P^gJYo*YqX z8WM7c)bDiZqyy6?+P)vfNYSbjBf_jelZOb`hbds;5=bLmDx;k9?TDd|iZ8->L3G>H z!TXG8Yd2&ZeBH%mXg>`XIa1QW+$QZ`TYzj5aTJjVlCioA4zPS6uJ9JDgQtuYD@;zr z9L1 zCARQ%54!UBM+%vRw|HfB118O2_*L{me{Q>~C(ZDnL{IW~ydtGr%3qMBiznBT?rw>g z=|~y2bGIc2oR#qESh(6rf`s_Bt%`7@OEK-E?f>oTIFt zR#z{kk;_nQu0el5P>8$6LQxpKybPK7cLD;O7k!SynBT#gn65fMhOQccBCW-hD;SX` zoJN8i6=AX-OGoo*1pj~9l3-$yl&G9gN zlcS-?`r_}l1}l>kpl_<^_(XxDX|_T%?CO+G#``?_F(rT(-LrGWT4cca=T8X1?EU0nsLy{enN>n)^>9hB59EcXcl*0OO2*!DBcY0bm`y=*=*x zsP2PP-uA{2wFzR->>p1)>?-|#%~F=)nZhsymJAxJ^FWT?mfjfQ58jz~OIy=0l4G5V z>DY1;43;q-w%n*J!ir+R9zUE#LQ&X%sE{a31{i;kO!7R;Vrd2_#gM#QOyAmDCQg}qdvsr6;Q#zV{@y;y#8x7|a*v@zLKbC|{F>uhK) zqWyJ@hQT5%4QjGBxDaiu88eQC%a3lr`(S-=$vDcva>xLAuo$~yla)qLTZ?WKYC6}W zUm(}{qf_zbQ(Pmilg^KLz(qhVaC&A>Ss3PnZ8S1K<`FLXDc{7=hj_^zD}^xR|87Y~ zVm&e1`pK}-l;dnf;R_msX*Fn1iLJCpg6RM9qhbh|RUnMh3~j$MzcSS^0g30BGlt5N)6t zGwg8dWeURZKJONVAvGfM=#HoO->;IYzIEyi7M+{H9TVb|Gm2L!QhBnALD;0XIM4lJ zpVZgY*sOa)1mlF;F|aa&k-?m)(}Ct~L4j^$ddp_>5~LV;Tn%OYs%|B!B!Lhj!oE_R zgT6;6PK*K6qHzssxV`X|R&N_Uy{FXiyIZ|Juhd9t{%5v=25XG$)JM6(>FGglEal3K zp(ra#>ATm+LicvR_ctYx%RcRRT!Nx-c1I4%6{9^{IIaTx%;T0aZyUZSnOqNz-a^2U zf|*|wIu9*GC+PA?e+wmi%ep9RFSm$WWF(aNGqr@U%7e8<{}mzje#qsnO_ThBR8PVO zc+MGrIxl4JJ)EV3px7a$6(2?{*9?PlPnmW_e&n4zuHTz%@T+qEeZa}|ADmvz64mn9 zy>8nqz7g<7EjG_2ij`8ZCSEvg)JvFC@T_D0&QFE`2arFFvf=jh0e=NEkM4wLz{Ce2 zW;;~%Rz^=whw=fEDW3cni^o5^^H6vtAdm(`CRk%4JG3fZ(&QGo(;qM)>)WQ2%~r&* zey$eLp$a$`6RtVct!g3++KQ2_{QAWlWzabg-%6{0d%?;{%4*P#-^`b7;3Aso(|O=$ zs+&KZ)AQI(z)t%%3$_vjry~9 z*%^y_7T&g@x(=hq?jS<=oi~Q(dCvtrcX(Q<=92g!@k)PDhX6X+4_EyEyFdqQxrk{| z3*<)l78>O9e^-;AfP~G>wB}96^ML;Nwv6(0cnWG?^BWykIYQ?bM+ZXak+6i~Pn1E@ ze}Arqs3(quU>luCFs+}i$2j}HhN>x+Q^M?{vNP%}6Hwlt>iTy3iG~3RChgzPGya!g zakIx6>J_3XjRp@|_>MmY|Fp*nu{efkYlcIFJY~IzERs%k3!Qk^1-FYX(Mf>m=$&qv z=#*PJlDVuXCPHN$lwb{xURXL=y5!GnN;ow;kcmoq|0sdG;ACX}%{o-Fa%xrn!2Vme zUqC(YtC*j4+yoLoRb!c*6$3#u65(xU8ELHzm!^P=8CR!B9WuPj-t2e@sRKjqS;$P* ztrJBl&c);^F@!tJqePw4qTqFzhlqh1U>Y`I;z6i{1_v9E$cLHpaNL8mK*=P1|Enog z++O&)f+C9|>dhy5ens2^%!U4yEi!C1A;0;6;cKu2Cejm%pE6lI(KTMT%-(;m zp=#J;ikueCG?EB;=TpZc#FXUtv4T<34#YS8Li-nh7w1-%M{*4?keA7Vuk+T$O0qrt zW>6!b8#$2XsF|K{H^4wzOskQHYqnte?ux??+nZ*ZA)Dkk6TMe}73uw^Y!5Ai%Ee>1 zcB`K_^W^vMBAm2CFi*Nb9{VfX*X-#z5F(gm9EOJgSg=5}U;?}o&|G%tKm&U|u#MFi zfy!cmSzS4}u`L`G`OQGtO|1Y%oAv8+AYaBw#R0W?GxX~@r~P(znr^W8OV5~GYRf1d zNs0CCrRXEW9+dPRS9<_yfSw#X3G_$?chzi2e4$9)QeXmm+3z`;KM3{pzJ{8|qyx1z zGP!qM-uAc&7{4}p_;3wto^}1qMe9IaH|eR@`M=^(f3><&CC4hFlB{?&rN2+2MdyO* zX9yHX^B7e5A0gkFyc5P1rh3}eMEYYkvM7%pDaJ`O9BN5fbWdN_SJbd{JBRv7%-N!h?CE^QX&w`@|^h{Jc<%x6=3)<}TG-$~JLY=>` zMTs`{e6^fTL>0BrF$w5|QJ9?0(Kg$u04GwOQ_@abMMN+b-s0C@e!1R3 zS`>^!kWykA!QXl247G)%u#BeyhR1nHXvp%mlf4af@0rT$+#;>?2#S@XR4-$41LA|b z!zPD-=ZDsfD9kvQMK5Y1s)cjR>+(gHDu)2jJl<5 zT^(D?j6T0f%x(UUv>25W8CGT-cP%TB-%HlBd2v#B$>%F?**rOD`~5ML!o?@iTw@XO znGM3L?ptO>aS~Cp(~<(o)B6;AInmSF5Q0?yjq2U5Wtri8FdM;*?((U+kI*%sgw>IM zx#Z<QaJuA>@_miw>XGDgVIb6jQbb@5CfYvM-*}l0g+UUet03&wwg%Noy`{$w+ zj=QNMWp3DkV+SktW`7bFNAO#O)NmO-%!|LPbqy9Q?r}Nq?D&bS&iicaGKv^aT)OP; zQ4yMl%^?vF!Vc(FV9b}3V!BB~aZrR31;4~MHFO>aHancL zU9Q^$H7notEbs%F%tD%qCCVJfWv$Q!89!HgrL z4J2Ky%^YZx(}10Bvjyci^PS3S><^i75EjOwpnBL17D9Cf&Tm8zS^XxILb|Fb#>xYG zBJQk7)!3B4zh)tyEC}h)=&K>#QilK@u3hy+kYs=GIfZ41g|)mCfYsge>pCCiNm336 zz!y*79p0LS7>AfM)=HW4B~@r5J}uD6rhBTr@*={c6q9V#b$B^ah|~?xN7j1Zf{7q} zY-b=N;#yy3(z>m_DRSyEQEInS$~UcFLu!=I)**to){fxkpccqf2td*5+d37Eh^gnv z4^ahL;{Ur{s`(u2Vtn+5lPAT~!p?bc2bJfST8wX;2f0#ZVNLX2 zQ0j@@`Tt)ku~1@}H@O*pR6L^qhUh7;z2#C(!3Ij%Z~IMy>XFWTsDwOA8kZu6AXl)g zoaKIem(nc2Z}Im=SgI($IgZ|+7;5(9h1Nifq@-3xi5NQ7F2M7GP|esk)`X$t`r#u6 z&}Q=Stkq|i@!l$(=m}laWV%?@vel2167hGQva+r5cRzyrtV6MmrLfGO;{Uy!D*g5l zCN?-1x0Rw<12*m$RX9#6Cdc7khX$_n9A_Ubjw%kKu%%ebHK++vf?R}Hb+V}k=tGy{ zqtPYyOffta-0;oDV{vw+kM_X6FfmwT#!4Zf`V@Nb?CruY+xncilKU6ZY(@)y&dG5; zkfdapyfDotHU5~fK40H#4a8A_Gkl{ef+GHUJM=Hf_?JW_od0Dt1l9!~=t~-Z{UFOn z)M;$u5~hZ`o9U>l9BF%PYBPrbsH1&Fs>@(}IxX3HL*gzXZxQOE9k2V2&X?pZ@K@c* zMV_uI(ZEW*FbFf|);0h#4(a1)%`NL*IPG^P#e@8wv=PCR#4XsN)mM7TAh?O8I4lnu zStV=knW_nVYbBr&JvYl^HtV2un7;?U1VnO6FgZ9T_6nVBM zIk|PV@?K-vW{okJ=q_gI<@<*n@U1!q+BjTFf5{ZfHyy$1sVP`L6x)#uh=a$u1~ui= z`&u?q>58^0$b`s+#9(fZMLUVQ+ZFe@-bwGhy&(u$ufTczDj(P`*m+5>2?n+2URDtT zbDd1ZipfF-l=Z+v-Na+yLykC6tArfm9hpua<9P3N=lOZJfEp-DsJ%rVszaz?_cW$vd=?YH>UQgJLtEBOG_e;b5j(}oBy&nZ^B^`s z*)h+@PDb<6FgN3ehd`#WQm1>d2a({EAhL+qo(9|2xPp;2iP$a8fQcBag*x7Ox3~~S zH~7anK#2;pPBGr6gAXgfj3(=&jyoF}hES;)A2w}}zu~0Hr{F!fHG9}4j}zs-1s-FD ziRqjAZM$A7Vmqj^5PG+y$5j~^p}-^Y{(aR}NMZW_0AS+`6qFNr5qdosMT9MrTtITN zi4&v9of>1*Wq?SyZr&(sq#$mK09O?F53$Yq>)w&lpM+pONc00OaQ6AACBI58dL!t9k3H- z89G8W_UG1wxJR8)wFGQ zKh?4kJn$ zv@MM_hjt-n!=yiA|5w$IDk4YC^gOp#_M%_T0EE{|s&lB$666_Ez&t9S`9x@@oCCtO z_PAOv7CCb!$K6&gkoZHMats>4v?n@!+_x2h+Z}3Gx=sR%xnyG8RL;rk<7{wDMCJAk z1i6z%O|L*#mEv&jyupB1B`m)`oCgmYb0ITU)zrKhtSUhs$j$EOrE%io4zFST3^Snr z>nVNPcd360K~qQDX1uS50Py@)V${-$GBxC!|8R|vysJ=lOhAF+^A7}hS3cDIt)Zw? zL(w*#3CgXP1#qO!J&vnJ%+5YY-(M!ijC6&O5{BKevuV*Vc}a#-vK~99`>6nR0KSrR zkTYO{!Poj*c)N5QMUi*FUSgEq;8gqNCfS3umgh0EH=X4rNjEbvU7_LNmJ-bup8B!o z=6d|kV0UgYmQl_cAI56QMZU(wTA8K2cVnxmATdt_=6>OmNKRBn9BAfxk}a>21^V$1 zMpINDDqO1O(u7IOk&{8rW0RT$GpXCt2LcX&wpzEct2wE{ofdu1z*Z!N3sA7b{5giO zAheHP&j7=wy^s6sYBa6a>3a}sOdYD8Uilk&d{y2yxQ?2^n=l!9zP~p6hV=I;WniQd zTfz2McAtsQvGbyvDguWGCqU&YV8O_k>O#$*&&xT7pcUTTDSv~4);Y~_7|MkuT_2dM z@%7n8Nugl~Eqz%;vb68ymt9_?fjGGuwYD0014-3JJuT9B8DnG-To}1uk#6q2aiSgJ zjGF5rR&6@(0GfoWRCyvU`15_zoO>eB@nU=>?nZV8_-*UhCVELc<-=j7_7ZKpf@8M& zU0j==ipl-jLi*G*yqb2R7{L=v9JTO2KXZrTMF^T(7|Ct(5)rkSG8DE?^WoVG!Zf1w z?|zv)k4|5yzH&ipT-=}OQN1=B*Q@*z3Q$yaj=G5b){oduIn%J3!c>>jYeUQDxLRsF z>)MU9*%n7f~KC2gLrTQ)T ztKn*}8FiWm6-^<-HeJFC-F%+Pf&@^K>Qn`_Xkojilk*~n8{K5$51ShLF>iH4vh^{gt5 zZyK8GX5BnN)Dj_ZYDgr{tZHqxo;?+EL@7(1CAE@tvHkgyn2$dgxgXbuXY9>2D}2o} zUzXFekvRg$g~V{e_tLNmk|vi4hCX-G`%a=rM~ z%LaB=6ve-Bqp5ptgGt+UYG55}5*awLf!`o4CQ zC0`Yk)@~Q53-eOJi4c!#%!Z@Mh*}J6+j=t zxKWH`P%jvMp-cRg19g`LhX6S+*I$b4Lun}XD#b|sYav`NZ^AB-hLG^hX_^eNtRaiz zBqJh~RBW@vA?Z0HC?|;ukHus5+(lb`46h`|vA#qlZRSPm{U{$MJdg(WifQPRmMzlf<^0ltC88oxZ1-Go`D)&j3x0lE$ zMfAki{?&1Zoh4qgM1r_ugXtvHTTGtyE_VMTY7MF!pKUZN|AH`I%!v50Kf7{DpXV~m zGp5x&m32R}P{ax$@ieSghX8x~v<;(hN>zf9vz{JS?VoQ}u6QzVs{*0|1`LsN`>?cC zb+aQ#rtK_}dO4#FprX6MfOMCwQ1W^ZcT}%pb}S2?j$%WB0p7|th?&J9%XY_IDW2XL zx^UvFk=mX)>)erZRkr>p?j=kN)Q>tS`%!jp)qzyWidsVN>R!%#Nbj1yVd~)%rrj8XYc%iY_lpZb8JebVgIhnM*p`>8$Z)xLL@^H27G+# zF1yc|ju&(+Jb>ul=G6(AcxIyr!2uyph6NJSjyr5Hd>rR_{X+fAosgO>Z=KbnXm<#Z zQ;|}Yew(a@n{9r87(kw>D)L55SR`JFRc)i_3u{6Ex#d5|43iX|J;ah4U%q|ze;o^T zJi0-*UggWDiix7AT1LD2rX{2f<|Y>AiwD4CIdOb}v@|zh>3$}5!$;X-Ud}i_yM##R zgMG&Y;+1O{%usGSp+RhuYyD>FuG6B&u&CbJ+XSm|9Ta~Y9D_10!RGNsiq~*vJb5_O z11DHUB@<;Nn9mYRV^_5I$K=}$3=A7`M~7UtXkG9E^rTvHEKbA$=j`LWKb*iCxs>Ro~Gz#Nr`%dXGG> zc1MfeQG9*F?YVr4*d!?~-)9@dhd@NRY7m>Xf*4rkL5FIEwx)mb>Ty51{BH1-VObt(8mF_WRzi2@1s!w_M2`v{36( zA%iy^Yn=(x{GoCE5En|%Kg4~JRvFw42G~}7PKb5TA#Lf$tR8(ASlwAyGINM%mpClw z=XFw+9Z~HIhyThry|!~oBmNAUKsvim?Q`7K1Sp<<6p(5Vu_2{^nQ`N>gJNAkyh}-zTu8*B7>QKH4f^CGp(7RE z?horVNUE1oLoC*XdapvifJY&C&~Z(7aW#pLao9KokDoE-tdiIn#7A|)?c#tqDPSwoK`dZ|Z}Dq63Yy;dsa zMVWXwQ_K2XwtlhvHqX9V@xhFl*k{WEmTi#gj@C$n8X_oVd2(bb7u_`dL%|%^)CbDQ zZXno!ZfSNqU@1%)NqiL+AfmZDJ3fbFoFhCJxwvKNAol9E$08V^g55?JdV0~0H+B39 zS`NupwdpO3NTMoZWB_aZC_}UAOtw3W3c(3*g*_Q*7~j*>ZLr-HV{atK@)_P`IXI!Nx#Z||AbTxQu z+l`h&1qm_5e7BnJS#zp-mC;8^TB}_oBCMw5ff#r*rXefR(D@WmrhV6j-^m^R)f+YR zejV$IinO`QXSV@)%qI0yu6tIQY0ecJjfVhc3#4)SloZK@qdWoJ5C@RMkvqc)`w68AZ*U|aZAtjMRh%P=3+Q7J-E(l_=lDj~R&rdt-oTHVtFFD%OAi|cLU zE*oFR0utw)knXTwv9l^Uui^_YJx_<=JoU1EAfIk8v}eOT2%iavswF)s zO5MG)B{0C$Ad3*$m6#*&!0>ZMgaB>#pKzIn4{P-@5vYxa0G$GVR5Zr+>=m+W^VT0R z*d0c||3Ym-3E=%dnmz&0uUoI`nEB)TX6QKzqU`{j4Q;xDv*T>-U=Qb<4^ZnIA9XPD z4N-V36Q`Q7(7a_)64ylpIT5v~QciBjfg;V?_X5LDsDuuOg{K5-XO!k6QfMZ$am}A% z&zkTqIgAHn36D#ZwJS>`09qPh{bqp**w4$3S6i>0R^~{-i)qMoMsbw@cLwJp=rCL$OjL{fzz(=Gag8U8oT0&ZV$ ze}UfULnqA(biiEpl|$)BNX}tz!5H^42C*{mC3z*d**&%orrIEg*v$yrD#@b4uz?=;6A9ZGG1=`9GNC4YF;e8MzaT>DNCuq+8T?xV zr8i!)RlLI|c56#DS#y2V>dn3NvX2rTd=u{JsKE|q@+`;>#0uvu>kB9$yK)uGo@85P z=Vk|Lw~YjM9ikgh8Hf0~)`iCI+cHjTxqq2|*`jZ-%sgs{QXx`zNcQMDwP^TOi< z5vJIjRWu5725UC4u2tE|Q9}A2;XdfMDPVNiE=1Q-?kR9q2G}EjmxkY3BNF(ME=*AW z4RV*bWc{@E z%SZ>g#5K`xki;6dgKASnP6(PMl@&$svzmmTGMedDiZ(#-gDJ2=Cq%-qfV!3bRcf$lGPy$2%804hJR%elk?4~vTK#+1rg!OH+ zg=6mpsO#E7ajni2xMWMO3Ai;Ky7ze-lz+aqqXg@l8%atTcognJfu}<>_ZNUgS~V`= zSZnf_HXJ|{3_EH#L1$wve*J$x(o8W%k{U?K#CsB!Oa63L3Zrl+R z5!)A28SIRZSEyBsyUf`rzGO~=Z65Y z8!pz5r91TP`;O%(DP+j}HwthnBAq--_d&Yu`T@b41gy;<*4*4keZ^&;pxaB znL&!USmC&dde$<)z%a@6XLdJ=hTmhQ%qU9Q{O?fTmxO)kC-Ro&IWznhPO|`vL>lc9Yy!m_n48V47k9#_7tn#=Kb@@DaYhA6ZbO=c3D1$z@V z_ZaqlT<4==elghQOsh+(UWvD|mm5ri(mXaWTLIG#gA1;*%E~*g+8Fr~#baKi~_#;ks_h1WPQs+@@QAU-! z&%t>*oSO9#;nMBbNezqT0C5X2U!PR}Y}zcPyjs{$?Zy2xX91xo}F>j>@=zzPw1waIo;C0;gUK%O@8Z#X>gHphHnp( z*<}PUcL3L4Nh0eE!I`YA^B#-a`W9nC&2p5dBVdInb1TSQdc|`G!+i&=1KE%X!UZko zQ)`e(uyqPihJ{=7AH{`W?z?n9Wpcp+@*O&o_>hD&QJs%@eYAZ0le_7qXRD|g`U78N z;-?r%f7lh4k8p;NX0DC7F;4(wX8Xl9V7#TwWwuys*IrmceaEx+(WmgGfJb#BOpOT# z#gJ<2PQ>2<;DKpam$M|PbcMn%X--J)-M|phnC09|Wui}F*8YCr<_j)Qd8WTKpOz9Z zJhF1Y@zAMKF)tM!``#AOeLF8JxpJRGO|Y@KlcvossdLmYDIF(lw0YR@d!OJU^MrIh zv%y(E1}T)%g*xnFXXcD@PnDk8jh);H8TCEARN{-fD6U@)tGqU-9wne5biqT1=)q}U zm)>T_OQH>jn#+Wi!IiAt)}vJLm3Zn?I0gkdv=j{@qq5H4+gsJo_ku-m^MZEb4M z`a?k~ic`ke6uKrji|+{dkV55i`pU&vj!RrlCV(`z<&Xc)A zXnr_jyd=I|C0a}Z_u&v~9KBdb0@z_oE&Q z0}a}M40mShNZ|CbEJsW=HAESO^aFP7xu3$IyDO@i+U!Ze_5C_vPUzcR3{kIs-6=3; zhO>EAQ{wBZ(&-V4c$jFX_#yjS#pKU(BvwR(7xX`1Co_9a9Y`Hz(mCA~>t^-F!inyM z;AQ-y+OZODMIztnp|mJ541M)OzSY!2o`+PLu)b=_7Z?W=(qnJB()YUkyBT42Pe@UY zq3qkEGL7h_Xh$&TM;Ajyw{TME%;|Poy4m-$tWJy}Rr*@-PrkqcvJ2AgL4Rze>x-2L zd^GA($kE)DML%amCo8=l6rr#FzDHiN(hS0ESd;e|m9{=|UV8%i0<#oZMA_J*FNux* zAAi@UKGD{F-ZUIfm9_&}e{?38HFhc=G>#CzU-4UdGEjG_ZK;}zl89O~O7mTx<4Rjq zNz;D8#WvTs8Din3P9_21@b4L-_z_X0chg@sH%@;<;0q7ZEq|<uxn$D*&Pfj$k7_wJj9Wum{L`7 zY<0AB`~FSx1h-LkMuic8ba?-VKNlih0xEbE87$lg?04T}}ODdj5K4SDuMZ#+4i|1I)DhPfsB)J%{O2)W2Yp z;ej)LRSN&)4E~wN37Jm0_#33* zOlD(qG|m$@*?q+wsaRf1s>aZ zUF{G-2Rr)qD|XXjJqBNSdV;!14D9X^Ho$?C)Nl5?2DB8&s9~gFN=&?m%w;aBO8mpt^J8Ko}wBQ80$ zV~l7GL^DTXWpkI#>D*=dH_xA;`2wpc4~*o_$SS%;T6s%XYvcs&B)w3%q>?=Z!||NB z65tJOoyq{I2J82_~1BghM7{lI*_(#WuNKPw>aCmj*ekM0JG-8@f3nR7-w7xEuqrRAIC`#Lm`?T4xt z38p4P=3n?PDS*EuVEVkEah_LJ6rmvnIX#EE7MNKERuP@ymp`k;K1 z()=!tM0%Nf3;ZZ&X#sJGrj32zT;2AT>y!J3lJZ+Ad9K~Ar>Qkqo8*FCgXz04EIMw8 z*gLw=Yo@v3tHk-6F@T)lRv|d_lC7tkagCP`4uvJA5B`vJ=QNS#@b1yzN9&c#QpA618>@E#eF6^wYh-zjU4O%1 z)%qblMCG?!k&K?pu{6#dz7xb5+F~+lRSMLiE*Bi|v4E%Y6QjJtY9<*_OW zBiyw$hn0Tde$(N^q;9bk9PT+ua&m3Z10$Z#=>6PISj7WbuRn?YSoO_X>%iP=onQ|> z(1iviZy0G^+#Wkcn%7W}@ODqAo?On!j^MM0wflF5Aibw7v*NB$-ir-uL-KADp>N*^ zzNb>OSHDPX*REa@))YbJmStH^g_%HhhGy^LFe%DPmn zgD7u@>0tpVu1)5O$zAp1DZ^lKd(%nsYlkH$Ni3(yOe`KA^=ow7wp=R1QJ5dwG0<#x zq=x|i4YXb^iCH&YIThQqU&AfN&*##+B6dgihjtmeXoT3i`DTwmcZ74DG?!I&xtg&u zR~Ev!G7{VA<>NbAZpM$-P!$qS9j7t%8To_Ect00nh9Ztx28!%rL9$2)Ky20zXVsyr zaD&%{Nra*I0}Fj{4P8j?{A=K@q-=m9C1_^O&8U~$BGjRaC=z5u*;ctRkk_DK&b%&* z=3S7_csHpH{F={8T0za_p!#l_+1rym^LmhHO2~q4ChNzuc)HTgLOHKxrR-g(*KLk=F z)M|~ojMwP9$eJP3$^uMI$!o_Jo@)QQ1>W_F4<$93e>7Z%U_~B$yx2TqF5L}^k1*Ib zd$Swu@3ltBi6b0SM0;LpN3)8do@G7CJ-OP-`33ZFau|H-w!Ey zus#2NYc81aVc<}sk8$opfQZ>s?{d{;8&-7cZ~ZhtuZqb{T7Zt^CY6yf+L&-*KpT%;<68gIibLhFtM#($c*iURMS7 zjBBpp1ILBrKQ)5&k=j)Ud~2TikCQM6BF5^hn_6-EXKW60l8W9j0=5!_#&*F#^Ewy$ zw15IRPP1ZV(SQyUy(kg(?JI8t|2UPb?$^Hf+|*vNA$c3Yl%V(qAZ!1_xhNbfFpC;; zoZtu%ozn(xlX$G$#R{0HE+BJ=0JhEB<^GnGt!;+@fh-iaitgru4x!JE4?JP6e7!2< zlL30(2Uh#Vbwz^-5Z%ImF@xVo!Qs}?sq@|<4;MfvFsyU;deWDB-tZI0Im!;6!5YN- z?)D_``@B<61ZVJ`cU#-Ith}s?J;v<%lJj1@a+({-0ygz}(=Yo*z*WgK64N~P5(S)1 zTkW>wSO=%hE>J1JSxmpK&cpc^j<6kIthJ{tUAnz*m1!Cul%7qew2G&U8}5M%7g89- zkS9~Pf>ZwWc7f&(+89xxj=}SlJldwY!z~D0e)+!bm6$b5>Nt-*j_x-j5*CYD3e5~N z2o{u*5!lYIr#I_|zn*PLDcC!Q;)lqG<11$R@l*?B#Wj<>;B%_vyY~_O$FFXDu>O;c zFNb75#M-o{)D=J#=p-V+MgZhaLC^);fXlSPmor}A<`&~Eew(Gc4T$@&TTNG)-&A7c zR82U8%q&Py`{lGY6NDQLQBaf8Mz<8{W>(?$B6C6KU{Te{#V0V?!7iC)KX~cx)c92Rb@+vz;B;F{Ls$)I*_FVs?DX#@?o8;zxe!F;T!&Dpq zr;@ZGeqN&GAHA2H$j0OkS+=HS@xE?vFZ9vWf>6FhS1-l4F>rf^5$Mf!c>{e`Tc@yQ zcoaAK+q8dZu5~Vll7^yCAo$=9*XAnrfDj(-oVpj90G`6^RS0)I(*;L-p%>=WY36HR zWX8N?fE?mlge1;NCe?Mgruz`;)BPEe?cMIe>*o~>$&X{L!y|t6dyzSMsHcYj%K8|N zy^P;EF1Y4*cGmTD_a+sqyIrGMnNW0K`yDlTIQ1dB7-^Ld(^J#5F83~QPUmUBDjw(K zW``drvR`?JCCWe1NB7z*Niv_spbkiC8RdR=u#4e?wV&KT>)&b$w!NT*SU9$uU(|)(S}>!xdYzaf4E0~0DfSvmJ7g2 zf#-U3ttDh1+ns@~$aXZ=lH^5zdz`U}E(ct$sK=^lyor=!(B)i#S!oCHu=pFUu5(Ky`s3M|gw^Aow1O;3-s)rmDAyy0 zWobCi<=d4!9@&%qmj%k4oN(sf0ChPpmR5qi7CYEk5y_PiiEFRJU6XjRE&yVV?>?a( zkdKl{jF2%*RcVTAoNbTTinP}y0cQSJ>A?p2XGR&p)jYG_S7-)wFQquOWjp84z=DFH z6`p%fGIPYs;d5U*2dV%B&0K$WIfKpRRIQmN{Qn&q#EX}A$0lrzfD*b}XSM7)Kl38?_Uu*!NVXQ^7|f@!AP_(p7dXhfmb2&`rwe*XYdjxs&9 z^2S8Bi!Dgr8VIU~01#T*02l#dG2)1$RocpQCJ}6W3ix1Pp{7!=G{)AtMFi!>f%KEA zM7xHWm(K!31OAm35iD~oCf?;pWv%vEOZTNlwV95g0&nXeo-ot8qKUW`QL>p9?#oE# zwAT2};}`U2GP1meU3mWjH{7Ql?1OR@)_~uL#pl!g$HF#$~aHQ z#!EROdv0|LLlubCWoPQ*Q0;2%kC=U0VL3(la0!r6WZ7_h3W3lHCuW%>n#}LbuMvukDE@gLp!`irEU03UGywfo1ryNB>`F*= zA?#DLJx{$YUuP5W@$ zT|z|2+K7|Y8hvc7S|kzMqq$z=xnDaj#@l5mXs8vB`qw!boJYegnn@R}2F=$LmpJHF ziw?H8pd~I96*wqu5-PT)riyF2x=C2TS0*Lr^n-ifmkqX>ls;U5<@t@!{Kb&Bf-r_q zxNZy*pwBPs1)3;V5rqe1oJ&^6N%MpX(K98*=tJ!omG;ckd-DBg*9gI~02&B4cZqAM zE3A>?fPfSZ`X;Paa~6Hd%D7;YF4hwEU-X-R`kLlcW#v>Xwjg!i99rd1x=pwTz9q15 z13vm9JKb9yJe0=akemXxAk?w5rpf-&O>lIU1cv~#e-YM$aAebyLMo#yr2^*s4d_;v z>D}>LMP!Yc%_|NyWk1kyRBeem%aQ7YIOk};L}!7by5yW}_vMNHfU?H(Rw$`ge8Kqw z@L}X7s7)eGEsS5(z;7IU>T_aG6%Moi`CgjhnmphaDoudHaMqT4@_pU1 zkY!eDEHVZDq2h-hXC~j+`&;Q5oH6Hi6~6`wGxM$ap~!6@TqKs?rj*k|z*zV464~HZ z)>2e?-waF`O)Y_usrrPUz}vFCCv+Uuv^-_ocOBW7a)u>Fwb8>9MPwu9N$G}~L$>U% zurP^z1epi(2ghfKP!#vvvLD39ju||d#dM`JohW(QV?fyJ;CCZbo>BK3`BuG<=R+mEkuR%^V-*X%?bKD5JP1l| zmcDwUxVlh1QWdvxQ2=^sI3hWfM&SU(GP*8M6B225;4F88 z89u~3el`3p|7x*FKYLzTRmmTJdc3tN6Dk9b&Xb44V_q6Fl)vSP*2z{K1pb>Zd8xlE1&R1e=x9;dGUf|!+yVTveilYn_y!O!bvPvK?@Zjo=Q5qh_sKn!`HQ8?QQMDUU0FwKGP~jd5#8&0 z#<{GF_H6gFIN~L}?X5~IUkoWhfR5+AEiPHwa1hRBR`#(U<&sqh<)UWb#_)MlJeT|r zwN;)5c{=I8zwC?j(-B95toG37391o9GHnRd73Z(YfO1{zB!d&_g5H1_kOzsG{X8|e zufITM%ic3skv3ls$6OMI&Df8nAFGu4xZd~4tXL{tyxCY6ueZ^(k7IC78N#}x-!y+n z)TY)00X!q|>0upNUb@44hX6yKG3>9{2Ds&OuSBZQw-h~s`^P28V`DvMW?CT@l%DMy z)ia1W%MU^SdE~XH@Ux=*t;*k0*EgDzTF^Cqc3A%Fkj&NlB60Vv?B-94uHjU*G~bS{F|NkcqTUaP55QE6K^ z(d321oTo>j8-vQUD3;GPvUN!eyvSCvC&0V09^nws zNA6*djA%eRH#4eZJ@;U;{H+L9fjav z%XZ^2VvPipA#bubi5JkCbyy}X;0iQddf+C!$CHc0yaS$`P^K@Br>eECMCiGp{Ghg7 z<2CiyFU#zZ5V{!z3^=v3ejfwQ*p?7%GE`^N_>xOuIvNxixWuVvGKJ-Ts zGF#ETO|+}A!F{><;>X_nEZ~Zv=eCAa`8G9P#R|Kqp{zy8*p0y=4fhtHFVvn#fC1y8Igt z=gr&2RJI7f9Ek+RY1rE_Y6(-M#*WT1PQ|33{k57K)}oTC4u=4dG@MGxF5#kNYHE_? zGhTchsrX1NCz1P>b51h>5Asg*(-mPW^56iTvW+XYH{dZOCi@(cftX$aw$RI|EOH37`{Mz+ctOO77P!YDltQb1&r?3mujuy9_oKy5hVtm5ybn_o^wPoG!?-PEs4w zU>|i`)Gps(u+T+0)W2iwz?nnf!6;zx#b#HRs6gmcmc--V1hZ`D`=l+}Rh?rC!p_G< zkRbdr@l;z<3kU|f$W-Q+N+|o4v>xj5&jH`F=$nXP@&&;F-@s$dgOf84Y5@B;nE}wm ze!}GHU6yh#@jv8N;4ufS5qV-?mWX8gK-acNc~e}0=DjdO*8$2NCo+xGm8}}v9 zi$nnPi~jl#fe(WH9!tS3$>Iw#m2_Kw6D2TMJVc?02K6`DYdhf{|f&py#UMR`EN${X;5HifqVY9G3x(<41p(QVNX07GppcG+}>9GTyLxzLs4EYT(7$Tr(Lr8Q50I4 zKt;Is8flp3{zuJ5bxGw&>`$~jBjZ+=Vd5-V_+AAvKqloA@gtv+m) z;KJ8!le98D$jjJip@AH$Vuj$!^1vZ^Ds`Waxd-}1;<9!)KWaE$vYGl^2MWirw-abx zWK^%Yu1HX>>!zSW@>>}K(Tw#5p5Eth$}2Q0Ju(Qr>-|uID;%K7Qey_dVY0OBXC$Lt zhO<&oO?mWAr?IG#Y&jqS>hb}NNI*~yRRBjSuvL@uuHYpMC+pij>seLZeRJKY64{9V zMGg^{6U>9|?}q^5sZ)EbJWc$N2*IbTrc;PLdL8pth1>L+zFK~hzXVIeF)Ch7mqXVp z(u&L$_DaPG3UPKFlW)1&e0VDPydPt24j0Qo$KdJTy|Mv*%DQd7&CV+9&OX%jlO*R& zSkyELV^-y7vs%bse5tE|vB`(daQT?4=2LIvg{WqtEZoC=u#Cq-v|%A3&osi+1hamQ zsM!pu&(O%m?6$N^_diVpiVxUTk=Sx;<|J+O21hKQT^Qf~zN>!Ok-luwln%+VZ=8}D z-~Y{WA6?lz^)xDprpA$IhZ_`=O-~n;;Y*V0nHqR0BqR0B3SBf*7Y5y-mwjCUE<)Sg|cuRNa!hx_a9$! zH6M<%`=vr+hNvpLb?QdH!1h`$NmhLPmkc)6J1oaK*ZFx7d9k3x*hW#@<$IQ75XvLZ z%bWGRaMf>H@u$f--gJ^q+x*595j=x{I}$%W@6IfMntGqG9B`Y!n_qS^*0r87rbeBR z7*uzF9unC(NQf|6$!=xxzYZH1!km!)opDXopJg9XxQj3d#fU>yNCs}A{7euL7|9

>77AX!V^`f}k+XC8lra$Y3Az=vi9UE~v3xiiRFY>C07tw6Zn%1%!c&iOk+HrOtQ4AaJxU)Q+s%2Imn zTc&GuJq~TiPD;#uQD|%}o_;zpy9Y7-4)loe%HpWXSc^h{XyBe>X>SF$8~weB^yl2H zE4T!cm}uYUgrCNX30#bBd;Qx#HR-6qvr`p}A2lcdfxC@|!2m@MI1Q-igzPTXdd5Dp08z zpoNB}D~E{0tm>@7ge-TN(Ix4eYAhdNP|Q$2)FAbc4aEtxfm&3!leqJ1AL4LQrN(0< z*XrmwSKA-k*Hf7UY&qV|+{eXl1$Lki^?@ z#So#+VlguP$3o1t#k;$%{Qhs1^bCd>Wc7d`hZ+rfUpB+q9sK2b&5F24d?!z>Gi$*& z>(>89ShYvN-1@d(1A3*8HSZR$^sDE4rXOX3Z+qr}wYJrv>VSpfuAJ4+36Y12F&k8x zZEEr`hX4#ea)hQmMyFQ??CEV?)f5S!<^gtIhhX-W7gRI9G^c^L-0?BwCGuQc&QkkD ze6@65V&|y&yu7&)Ke`f`*e*amG^Xc6hG5XglM9Mm^YJGLNQFdtkh-X=qZ?AXYXq1J(fFd+8XW}t{_3^RO zJB#aIbL@eOl0t0e4^S4k=0w}9+o_NYs$thzg|*OQqr2T(m6LRXsc^c)3I=59TzpR^ zqInlo*LrW|$fym&*D@Qe&gEyfl?rHU6p;H2q!I9s+Ms7swsd#)dK{{wj|o!`<$;9C zRW0nmuuw&$T?2>Yyse@!b_(M{8$B-7glBr{dP__nvuKB%rw&zOs0t=34h3p~}b{U0(YW ziyhN+`HPs#S`^uBl1cFS%|eB0Cts2WQ!ufTZQcvp@gu0d%eJ<&d41TMr0T~g=Cx*) zr&6GP>lz7x4Mhtkg7Rsd#u0n_MgA~qyNH=~gN@O@F?kdM&Lr}QUvNWDts2zahVb(V z?vVQW%zkpfw-+d#Xk_G6-l24CJiL5&|9``Z2CR>UE$A>0P2YCBvU93#w9!a9gWv6k+iGa z{IWpC@3iPClS}VL29k893nq>DYJVnMBM6<$3DnZ@7}5ObVu>*gFd15tYq8=y4Ec@v)E;05nKHztk`{zg5%vh&*U1JX~G&s(6R*-U8G8)F$bmtpT34bCx1>+)2QE(lK_BP46lqfq%sxfFndX=mY25vzV5{I_4oE^u zV-;&CB4m-lk}HNH1M)nF3N481U-hPw2q2``8e-jyPdFbn!GIDoU=iH+9azz4_{F=^ zV_|xw~xjMCnOhW-{u$RB}gsyB6R~4bXh7_ z{WJgl*f(WNBFSVVpqgT(@kac-;qtA3BPzvKht7 z3Zn-ms~HYoKPR3CGuM7{XTf{oeIaEEnoS-u_DN!PINPnMa4dYI116r)Koqj`&x?sp ztc6sE03i7MsJudS=FXMHSp4A1}DDjqPR8Z&Y^lC9&EBqbxJ zXWV93HdOu7_C$~~q?Q?;OK&&e`!T*ybaQqRDN$EYl}2z70Bv8MrwP#UStp=i*eI_- zfH^*@`X_K3k)5wXOZ~I;n((v@3P_LuY?z5l-#{o~$7WSQO6D=857-Y5Tw?$$U`o-e zmW05RyxW4nR1enWl1jxNKgQYzO2^%Op{ROeJQnQUab`i6QG$RlIU^Gw>G~E!3xFnL zNb)J?vEMs)40lvcQD)$Qg%6>|$bo6wbjNN&>zF^RvUaU%4Iihq4L&<>&3T^5ba0Xi zdcM?sD3ADq;!L6(e}ERbJGr^wc)huBJu7${VQz;2@Z|A?(>{w|imSnMuufsWv>@Y3 z(k?!V!x*gw*)EG+{q(T%fmi&VePmQ$Qhb12pOrQyyfu}$B^POWZJ^T_D ztGmpN(r6EWfuezHy}@KpX6(Ctll}D!( zu%maaIgdhFlUVojI929P68MdtDGBB|de1bh_m(oR-d7QYh!nU_M=re3KD?H3^O#(j z+^drQ)D7u+JVISK+r*C3Odun79^a(-h?5(8t8d+5ElRfBIn+L8*Fy*Dij!HbbKsU< zh+5eh@h)s+Tn)*RT;^Y2KCv>#2@Bu!BMh-?Y?WuKV%?IIn(+#6=4{0aDbE<4yHXT) zshz}JlXzC%gV3HM2SwQ9YZ^^tzSd^Nx5&_U1(H;`xY*j@#5EmCmC99b`bh~C-^ zw`;P3WRj*E=_d+|*ZI0f@CV_r zN}J0fNrN$P!Iq9NK*$L4+3TV>=SeZkudmrgkfL?bp~1qRak$*ftil34dzYn8q%PedF-E@WQkQk{Z{ET zBi()TE0nJzW)H)L7-6}NBPJZ+pm zZJA3j1S9cOw)-gfMXEi>Q+?(wfyaX;yZES{Iml)6mA)~vi>)Tl)Xj!#hb=;W&UuMw z=4M!fks&Y}#V!ZR;&QgbbFdsv%|iEGJk(n(u@ez_sq!C;$V><}g-6=V%~qIHceDn3 zhFbz?!8UC*#hrXkzEt4H>o_=I?$7=(iY{@5iq2r}N+_8B|HTLJ0Ut-PYsuD@m0XT2 zf3{Cf>D-^3`Ivs<%&_}-3;%cwLQ~_Ib~?spkM{^Fgp1YT;~r~X9(Nyl;u#pht)nh@ zjfsLT%`hpfRs<6&Xd3N9NVYMe$;|Pc6w46xaO1c6^8v6y=D7jP0DRjLTG`LvdWf3q zfGP+^9{_CsOvX!fER}MH<)Hejz+9XEiPAsW0@EbNnFF+s%a4ys0rTYDw1ZhaCGY?^ zW|;M@=lZSbVPD)((^IK~=wd-DAZBrc=rl+4Ca zZ_jAGbrgd>1{!5KEf-w2>xVZ@@Dgc5{4PI?9D#K_N)Wh2t=EQxSKrAHltqXJvcVOgQoUheVXoA? z7LeuIpqs7#v%Xm|je5SoPJ3HJo08@`qwC&rs_4bO$Q+P!2QH+Zg|#&~!bU1YWJvVW zViRUK?!gZtdJ30&G+;@Zcd6-75=&Jy4oUgau%-wI6+Jb3SYIrZ1DLTZxCiGj+Er{l z6>Ws&z`iVEUO%TLtX5gzb4ZCuLU9^!N);d+a`gQ!RLbOaF~EF%AKS(hM&njy7h5d1 zvRYs6+#X-=(o}yyj}DR6Tzb&vHvD~yuevo-b*jw{EBdaV_qR~4Ajl}zXOpMWb>4_A z>x!2EESr0f^{b@O=egD7y0x9mMC6CQ5QR*3((Z1xVvinq8*?689P>FR4v@3*TBnOB z@7s`Svei}%mujf}N>&Of-V(%mHUTlaUmuUx8h|Wl$oPbt5)N(*nQ5hlYW0z*DY-8* z&6-LvmX&%Gj7bxY9xq&W8K%|k>*YgR1T{+tX;f+UGAkKn| zl;tGnt^S}^^@aq0kG(tJ-qnIP#LrX`07!~G z;{nz4Y;#;Veb`c!mIRLt9c&kdfI&N36Tc8&%)gr7_0IX0(C+`V*GVLi^)l z?DPZs1Zw{q2n|QPC@)O~JEIIL05(n$?}GmS#0hQj_^S|`MKcx=sH}vz-wS(`l`2}u z3kO^OzZM2vj#@|ealrY5;6>CBOMZ@0ChOVPt<#6zg)Q=K>DoT$41OTEccfRB-h*XG zWtQ9^f8Xpo9y>)|8}>`wxh zB_qhk-b+MN4HzN4Lup1w^Hux=bJx91K5a1SMLzxN!HdH5IBA0pOhl; z88g<*=H2mtF1XcXa+OXo`&8nO%5*=3*xWRU9JOS|O9=P37B=3!WXc}f+o$|oK0pMV z>4Lkc$KY@sFT6!H?7r*6JHme{@sDpO=mI+ryKh!JhX9aAhTOHN z^TfVQ$!zgx#$NqB=3l;&-`Q&%xt}vwA66a$sn}OQ{Bo6YZ#Ma6IVo1M#t|Y&9ety6 zW-SjZLcX*jhqirD=fTz^~BKc0|z4hPQD0KTq;ukMIEh zct!UpGrZfHn8Ri1{b2co0_|QOJ{dTpYhB#=Kq3=vU?`oVI*2VSU5TK@1ev~ z*462 zNy40y`HpGp>-dnLQ(0Er_h-c(D*Q}m35@wt%Sf1icws4t=>+uM{WE0M$TB)Ga0!>izsj#9RMrxPAwufHHEI$_H; zSwUXtkik)jPQ`@lQTJ!N> zbeaYHD&LRs^#|NALKN49#o&2-FK>2zcBAeh%iz%z_4vapzm2F+P>?tt76wcJ9~cKH zoei~yz?y~ca(_8H((fOY&B1qm6MIA6VALhW_11;dJzr@OMUUD)O3ux~0!+8&^fV98 zV>8Psx)=effWY{oNTL%3x?i4IvETU_r0Mm>h;f)SB^eYf?!Pc~Lt*j4Y{xLL`3AZ=ebHiQrJhC7qt zdZChmAS(9k3maX`d;riqCjcp(Uf|)I! zIZzBw735AHNc~qd(GdU9mVOD3XEc&y0Ce9oLrga8pWtWc=ahLtk@Ho;)nxihwvlix z#a~WrgVDr?tFnRcBxn?&>*gl#Uk1>cHyZm+bY@eBFN3rt2~bM~eYd{`uiTM8XP&Mf zq}fHeJWH^CaP*H9d)8>NA+TC^dR8~j;z}#QRmppkFtg*hNcM@K3bFYX^CAAgS7Y7A z)>b}xsyw3!tn9l8gx3mpgi$3XhX9v%HK(T)H(&GpIHK!NGEX(%aC^S$@wS z>^moc4fBjB1=zSZDpayZtpLf0CS&hAGLM{Fuc`rBwblp}I{=W_hwy}b8X?6e&H4h0c+=@W5$YA2A-_LR z`s;aNhfaZEV$>%!$i{S`TI;hx6C<{A>Y+u&5>bT^PayL(fJ*{0TW#uP zU_UgUOl&#>^YzVRfB(Uws`|! zteixCDCs=kwT$|++>YeJH;!m2j>;qmY5P`EfInFRMfmgx5dOV0|0Q`&IdzVigyeQ6 z?x?FFMa?cI2y@g@M_H&?(XLOw(kggU*FQx>eaA7KI^kmhC zF3sKaVuhp!*MnXnLym&xETHlI_p~74U!A~VqfwiWIFKT}2I;dJH275T_g}fpQ;OUQ z;n{)PXu*DOI+51K4*RM#dP)1yNUMJ0*>0+d33x7asfk#S&@br7u$zjXDvlT+2qncB zmc%SsubSCCgnvp;&+rJ*yNzqI=f_zRpoXG0Mw6Z9oqNPDR*%aEZu!G`61=p|hM|B= zhYPvz57gYSI;b*&brpyi+^up`^W)MtuBv%?CW>9L#?A<-?0hA8csz>yACaer0OE9P z(>XIK6XZ7i#j+9=vz-Gb=~#mDk%XJ?Gq1+Sxu7pYj4p3Mb>3g_OL--0gi;f^7qdzM z5rIneiw4NGubm`#tr+kUH#?sL3cGo|d-H(8!tVzL9(C8c5jaK24nw(lMdQ$Es#3_Ssq*^N6 z`^N;N1h0f4`#W{t>X)BoL0sVJw$XboSS6B?725iano;3zjwNG_R-S4w)6aW3qp4b%X-7XPMW-2|F4hFZ+xS2q!viQ5Dk6bSb$wCu4wr z&zHJh=r4HqHN5&|WLnd2R@Ig529iZ|wSm^eV7med&1qN{GVh%o=Z_1438vJ-aq_GO z7n+2>Hm)*@9SCCfTS~wGz~r`}f8HpA1S3qsM0&caB0Uz{TCR=)Z5OGn+o{DLJ7Yv` z@4KAH10&|LE&l1*=qelSCsem@mHG|9F)XTwe zW3lJi3j*-w;_e0cop<6+Rs)h#UPs_icNKq@fi*;-a7K|&p8I5WDkIN&N&Zrxq`(|w z4E~2FxF5NiiT`}T9m-L21%3nA@v!W5Y*ymh=uz%IBJCIt3sm3-X&iv2=`8HuN zlFwQ8cC3*pjDiF<^^420_8&P#=5tfXRLnR{V12bd*7n#LiziWt6RcA^mK;Et*3%#OJ<~GDqWJ$V-UEy;Q?hDXT z52lT>i}4~Mo>v?Q9r27LH{=&h9cxmaIZQy1<@%L+nPp_r8aqZ(QZM3}nFIC-R3fyl z;?#dE-9rJp9hJ~d)r=$t|ZxS7&YQj5| z8S+%eZg3>}|D8p?tEtDDtcV@k0KrYe;X%m#AJKHas6$KNYw{L?a@VX>q{9?FNKJdah{PrI#L z^0HEUj+i^M8ZWKvbt8uWL1(<;NM$A}+T3{N5vgE+cUbIg4MyY2!XdQ&m>83AlD#^` zA)gP|WwsOY>wY$+^pDHq&dg_250Zl07()46?C@la66G#_pviCdB$|Xq(B0Q!Tg6pq zWG$ld%!zvx(wSYuf+;-m+o`5LtDk8=temKS<Z)hG*6v zoq;esadeeo1$Usvgfp-Z0-Pm?>gg`=t4+Lo!fe=e`! zD5u6&FbEWBEIrQv+3R8uQHUu~>*UvTHde=2lM=^(%Mqq*ass;V3 zWoA@J-XG?AwO}O*AwT91P;Q>?au26suYD>bNhO!RH{b?&mkD3}V@M17|7XC2?Zv)q z3;+3PzXsx7fI4>W&y{LYWS@t1C=_kuJ@QG-fDR#p4`t~O4<*W-WkCJp1_L7w%4cBl z6P$l0jq9QY1~KlbDPp3O+SI*n{Dw5GCdIM&7c^1y&ZuIfh$k1r;N z08YeCULRtUUdlxTl&#jT_uCvCgH!P}OiYtz>E&vTTipUUJDLQ#Nhg(+F}W6&2F;i& zYjTo(E<-(#4?93De_P6zn>Rw@;=$jIP8K#OHG1ne$w6WGsV0~*+$f~vm^(!j3R--c zLlgcvyDSlOQ^MuW!@$(l!4{hYE-{>UaV!CG<4Am259zWaxAuYd#I$PMkt?gC@!^om zX4(rlvpAZ(tfSQG%q9eE#~e#O;ZhE$N*jomr{kNR{bdsk==PMLs2@z}l%Vwf9N9!U z)>Ry+ww0ywF2xWct)fgmze0ozLbBsU_^b!LRbkse)@`VN|0IbC>iUf}!+;Yy$a4e8 zI)i9QBnGrpB+U$QL%gNGZQE-vq+j1fxogqOGx2N~LzrAziyM$5VbKdCUpZw(e9Q8! z;z!Ll8=BY%{?F9|CoM@Byga7u@SEPvR^Rh--i|IEHO%#1eu1oA*B8W}Nh{H^LNgw= zVu$e#71z9J-s!{f11uIR2t^1!)>G4uCkIDS4}#=B4z6y!{I4l(HVK%eu8wnG&Umik zGcR{$`im%=M$I1*o9qJJY(0Eq)kMN3hpm1{0^l}11-Q4CTpgUA=+KJ`RH)TmDpKH} zQ_~n%?==i@Jg=zutGfVxF^-|ATt7~&=n&|icPTtbcX;Xxv+7={_B zDj!f)v|(lp_yw+Yb3tMTEr7zPQQsMl^5#C;4MY_|?}Z(lznHe@TC+$mVz>OF4!F#JwbsSn(yzoqEZ zK@B+0&QdEnGVvWnnbc(I&lZ%Eg%J&L*lH<5z&>ZOouE$5_tOeHo)*$p)yow{u`w%d zVy*&>VKIJaoWttFQLr@VJid_>4j|%^qpw85dID|AR&=>ZdJuKTe(ZnRK9)nI7lxr_qcl!ABR{!n4>{IDpt7f9mK0Vv?$_qPtn%y0b% z9A&k^xz5yln+^AEI|@=&;&YKen+LGL63RqQE|P2f|FN!n03|PIG5_?LEn~VN6i_Yj zqez;?k48L?nj1X5Jcu^*%A*0dGi{B{C0qw$!CoYQKH>lRm?q5VxNFSsxOq-U#BAR; zAQSh3?Cl;mf@!zDD|_`5bO|D1t`ZJ{E9Qmr=cqPhy!+#i=wm-5<}?4{n2sC8to52$ zaCxPAkqg>j1`dU_^|tqR@KTmJ+05jo=te)`-X&n91iyzOlP1*Fi-@Fu>z#i%sA<9p}T*``9-54cqYx5UriWC-4KE z=fJ2lYY?UKqE7Ol-hEePtK;m-=R>VCIZ_>X0B=}XGoKZ;q{uJlSSd{0tuSpc<$k}) z3?c+C(8_0v^5xZ>!<_LKOBN|4F%`KadtwW*LKnyF>U_Vf(h2@|AYygOIniHfmEv&- z$#e=Q>5IYzU~Oph)mbN2IStR8J6u>;Q9`?JF_Mb2m_t*50oRh-bU{Vs;YjgQHo?~O zG+>QUOo|OCQCt_zh{SrY$y$9vcwK}gs^!wy*GiC)N}~(ZDDWsQQAAzt_zQd*L@DIx z5XV#AO0pd;Zi!!{d4D@hCVcx6JTrX04%v69!_*XafZZUn;K6tvI*!JW^V2Ul)m@6_ zLG~3l;AEfHfrW8agMHL(9$*Faba;aJm1s(67t{`+-+OBWowgy$C3-gniEXL1b*YHUfDr`E~g6!sn?Bb<*Uh1P|k%W4o`k1KHw?!?+Ys7~WpieQ1q+O;YZ@A5zhHtOQq>Nr{Z3Wc<&<+Uq)G`iUDNo8PWI5e_qrUcB z{PI@m#OC<|y`O6DqOUMM04UJi3w|bVG2$8{^+xznFYKs3|c_rGJcM);xEKc80N z#|vv-9?QZ+WfLL-P=={9*-alI$+`ncJ~+~h-SbiO-pQPEMTyKsXie^#tahu|3WXFVCX;Apn%o_XVIPJVsFge2U%%-$IR?wgtx4IlWKnw;WWTgxD5Tnh6xm# zCwrf0fk{qcvt)YPH43^!5r8$DAd9o4(q@wGq`a}*3U(-{Zq8FQE4>U=^9fWj3X zbKvfdCrMijp4t<+K8@d$Cc)ydll16I^(Y_4 z;)?DtLLMEy_IF&Vyt05fRKUJa9aYuPq0D%Kt6vg_wWIG=OObP1oTy!1aRbm7TP&as ztb1a6u3msbIH3wPETyjBsNtMsczuqXI(6IgxMxfHvYTDM!CGU{53Xj-8g6YQQq@}KENfmRdad;3NWb|s2NMr_KO1blw=ZgWD z{Fsc&gr4^dIk2;+L`gI`&dMu%|B5ovf`z-&D;{3rYOwewCiD{w8$iu&ESdf1e#-s zL8J>=ipKsd- zX5ObY;@Eu4`E~w`-E4A=_=x`2@JRrTG@3_lwmOI4&88yxwh^yqlMwTh@m z@Juc`klXWyl}L2EdmfDJLh-B?!GcdRiuubGOs~|*;xvi^u=!(*g<@q~)#Lmt-qu9h zVd@M`(teA1$G%eaTrw6JwaC8OV9*WI+B_N5!X~Zq)x@S{7?ckrLAMiYv%(#T6uWMeM)4Ae;iqIV!J-glFko@i;oW63HW|utzfs#A(3K|Nyor2?S&hxCm4bq0VLO{?cFIwS(|F}!qSyLQQlXUG`E`Zx1H@@eP z&q=xZr6l)SyxdyD!vcS8%0xRXwU=v~jb`cUq51YIBh|^N)&9Y1Stabx5FyhgJJx?k z8=+GS1_9lcq}T0kH{PS~vO{)>G6h5N+dHSiP@~nGMFc%6%NUwo>*bFA&uoJ!P>C608G-UBv zaChVFLs$gd|6kx+)1HU9vt6Gk5W_C-jxa@)X6iiifT#K4;=MjdL(pphi&X$`+am59 z%nIfek$#OA`vISH8UEWOF9vr1NEMivArnw@<d?r(7iBHpduIpnDoj-Be{YUw!W&u9Eb;^!#|9Zy+W{(%o_&I-!dfC?HqY>uqSiLwvOk8EgOCM8_5!)wGFxh%j0%yGU@o=pSROkI=3bGFyR@G07x8q%uCXj2 z(LEr;Hx3;98DmJ9gF2BnRxxosvXx4XGs=UWoBM)WF0#cPCcC>J06mOJ>+-VqKnDPVjqh=2DGE&`K2!Xkd-!Bb`(P;CXrzG zxLNF13KZQ#1$*?XJksp(K9V1}AumID#hWuPp@DN?bbnZ;J`ZDGr7T(F8DfZKe0@=Esy(J;|E$R*p3 zZq&JZN~MV-4C$nC-pjJvteNqJQc zo6ZJIq2c?NqYD&zB=h!Wz^5&7G>+bI9P-hAB2&Xn9>car+s^X%dGzau97r&?kvEKx z9=9dxTo)r2#?}VluYL62e|F@M%`mdM-$iI&hX6_f9BI^E&ysKFSt`I;QP^*+xpfJ& zSd#yB`)hJLo;|#~~wLB-B9< zbFyd*2sOAs+e|`4!T42}!n36ciElv2{Un~5Sc;0_{cUh+IYmLaLhMvCL;E*)R1_LD zy*2R(gH$^g{9G`zABMz_U=;?!9;9MI3|W%(wcQe~GtJqX-I8W~OUQH(u|;VqH4O&I z8dZua7nV#uuY2ET_d~C0+NzRvZ#HFGl$IttIPz+L9j&=rYFlIT|DFJW_8kLJ?p1M_ zg%y_N(jo4N9J(hon@gr~>gAMk{|qqj+M@YzX?Mq$M##ap3ZXfD`Sz0BO%a0YN1T{6 zJ?Fd;*+AR3c&>_d{|VE&GKvEsA~B2t8}NF;dA{)OLjB{|rcaTmaGCo^KW?*JW8#O1xdbo7nc7*we*@F;S? zmO3mfQqUD{Sh^kXxBZ$Ijpv-a-rOL{Dk5c3$Y?dLp32~#{~4~fu@v{rU?647_NJ#m zhflp`Vx#UIKyx>_HN=-)CY`s%Ohr1xXG@&_5{<$PV$6oQ(L!0^V-@Pi86(sc;qzO} z^p8ltWnOEC_@K2~A*^-_+k%UuQQv?}0BIMtPo2&2(%5{8VRN=mWrr4yfcmHpg4j=B zFdkMOF)g3G<}W#>`$uj8=_T@O%#q$=6iL2i1jPh{3a&XomdN~elw}Z6HeF8X2LS=> zn`j7cE~xmcdx0LPt&>e$n_|WaM{$P$EdY;>)f{Sukqj{GuPbChCM|r%Zd9|Inyb$2 zuP&CLweicMH1twJy^ofqd#aeq(*l7^mEdR3k4Lhk=KE{RTyUqSQ1?`VPM?-*thp_XgODp@eGz$BNzN>yW z2uMq`>Mj@0^qs46Hob%05wdm~^XKJ+Qt7(>TxMFlR6jx4jAVF5Tef^{n&18J?6IxF z;wzU>MUc>c!4lv-9wHprV3Lg!nP2hS0$C@rx9zkv-vRMyDzhojdK_s-=0aHII)H-e zX+`1wA*{T?M^IFtsYyD|H|4em$C^~hh35*H1Rp-L)ln0Wq4*!jMakly!=Dn+8KB-K zFR4Oo54tJjA5mD9L{<@f_fZxD`fg=!jz^KC>9Yt+AvR z%Md{@g_u+qAQ^j`9JRV57`;_=(cd9-uM~(uNxGXaL~UT5@<7frRhgB0j>rgh*`S54 z2uTOLSz)pZ_4dkG)!MU)+lK&pMzd$Spd;=XBBMZy6kV&ydR6PkjQ{yx*w!F!ToCWc z%j0B9Nx}dLd#9ghuz{1tkxl_^tC%(y1=4$q1aAm^_uZL{0=$5`7dLW*HbunwFo3Y? zWqz=bD*f9imOK1}TH60QLl*_dO_DTg)_Cq|pTRDh2H?QphlQjW%gIFNaLm7nAV05N zJ7S$w8`U1KrG@ zq2osEwF+`qEkAmeA>9RZsi6s%nUe8_kaZ0MT4l1I1Bd>2=^044>W-rt2T!C0tT5D1 zqt6z;#?(t(SCQN!cD)=KA$0|eOr^2l*@@U@+2D5QB`T#nTZz}I{#$i71p*D%_nec{ zA9jk~A5=+eV)oauCZbi2ODa2k{~rWzpWJ)0kRyrV!1_tx4^D|Kb^EoUiz4`Ax7B)& z7?rU)$&f<0z7azRw=k{DD~?<)ZL!DSHO!uYVBb}~(#Z%qEBBm_6dpv>inN`kr+s>| zFHVYN0m-HSWqeLOW^fNhA{o9LPzW?n)3)br5JXs0!hubGuXR6Hrw#^0$x1FgAxDnX zO>A9Oj%Xtqp@6%9P~%sC>zA3WOm|aVP1|TZ^FH%uaZ@MHOiEbooW0G|hW2Ur0g2T~ zsWwljDp92-RP1sav#PmW&a|j%YWkCcZMh>+ev*$fSDzB3W8u^_20VoG{Y(xqH4sM`m!oTB)@@|K@6=?h?iTnMqf}XGoTn-K2m{hT^${6AMN_Ki+$A#Q<;W1kW>2{b3}>HDNu@$7yfF z_gw3OIMAINL=JVD`VyCjsT@Q9bR+OwZjmzfL`96~Hl5cL%AQC;-@7TfLPtbUc5&*Xr~zRh-nLAXQ}pro25;fjw% zb+l?!PY`)S9$yEMTawtiQ6oU|EM-0 zLvvJJqEO6$Qe^A`9F>LOAO3AIyHM0jdA6B7a%X{K+eb-9pi^f?8PQk)YTG0~T#Znw zlJyF+Zdaf3+PioPD^ini+M<~teEZGQsiIH@(VR~o<339suEQ1B#_k?-1|$6$L5EwC zPPKh)3@+SGc-Dsi%Y{N(9LA*jZH1G)10ZN;bAOF=oh#Q9THXzMA0cnKD#gT!eB)Jv zRFG+!4{=%}R}c)ilPmA7tyRFa*$j}M0&?+d?&qAR_wfKPaU1$O-V`sU)yW9x^^!7? z;M9bbZe`$|wvSS&rc!`-kQebYVo=l^4fM%6`RPD5<(TI1WRwPvN?CzD6PB&5~XQk?KLNXrpTatOIMCbd;=P0R9jM-mi3BvA_U0%iSAu|7DuXL~f(lnMDC zZ$#fF_L)j6iujvFlJ!d-cku_5R!~q_yB>PJ&6sx z+o#R(zoglc2TfqjYok1v&MlpUonY;#FnbSBn&*NQx{wW8R~tU7ZShxKeJhNtF9XE2 zQspFiui`YHUh4{~R$_j%)x$iJ*s=aySs&6^D5Vih4~si)d7HMH-2DSqYVtw-BP7p7FS<%0Fy1~ET@iyC zCk>preCWc{Dwg#PabOFy$|j8Yj*!+#YYJu=rKrX|w%DL!P5f+r$m*N`Yivbt8z9XY z=Yg*vMM}tkhX9km6WrbJ7k=#e!Ps*WH_Q0WL|Lu>!$OGxYG|H_<*)!%KM0tf@~{W2 zw5)0E>uloXr}$i*b@ydxSf{uoM=Q9TEhTUq&hd_i2hzhtN+_-*T{C>M+tlI!4SYn@ zbj-6rGpisyn;fQ?7Odn}mvQ0u_H2GgFM*>n*wJkYO0^U%^>ih0tk6isE{nH!)__5# zeuoK0uE;&LMoQv_Fd(E7Zo@7eWVNxP6eY%FamV{?T&$!C8kVf-yCvV{Vs&DPAxZB> zKGqEbRGhhFKAXotJ0waDnp%oD{die~W*m}l*;x^MBA&f9ct`kCc8_B!3Mvm51FK#W z1tg$wg3ed2P`7e+5?sLKB3N_x+h$eN$r<5J<@YyuHE6$Jw-_)9%>kkN`e93aA zVltp;sXQx66g*crd?j)i=upkBxjaWqi(2e8Te><;3kmw4e=<`{s;4Is3@wvj9bhYp> zOAw%mtr>vGrb?SmDfW*m&YHK=8p8{o%U%GHX+b+=)?w$oZIF|e!d~O%P3J`alYb0Z^?)s;$Q#_?(CBOguhi|r z{EIpi>djND4=Q-E@zYpWX zEElR6iiU%S01c_Xlp$Z*e}$uKeK80RNd5`QB^0Pc=lJENPC_Y{z8B!?(8$X7S|_yE zA@)7v^rzJKp^39ELC*|G z!09XWl65DN&|Wf6-M*@LZS2#);!ESp{qbP*T-bc~K4Hc~wk&V>+RKq23i-W1; zO1Up*A$y*nq=?D1Ss=G+c0|LCHuh9tOrKSuj@$`D*+X>8F&B`3@uUgoXJbuB>Zod^obp7nC z;Y9ejZX~!|Pw?z1b8E1-c&rBmwtkPUBXr#G1T72p4IL9bkCwH$hFnxrmOvU*(x0MEo z&wyC-9*a+&1|iik(keI$<=Ly%Z?45Wy*aV^vM}mr7(_tjvC&jly(RTx1p1MGq>g5g z7RyM%|H0wpQgpMlb9vwjLxeo|U>a3XK_0;+1Ldm3J%)CnvMGMYpnwg(?gS|=lYb$= z1@UwdM=(K$09(OcK?o(+5yv5sVM!cc293gf3ud*a@UKsX+ow4oH|U1aHvh@$8BrRf zKcaoo#JB=&2TL$B*BDHdg^jiHH>ggN249+_v;iZk^B6U3tDqbp$$j|j^(gggBB>|G z1@_x)E@ZY1Hu~EwhI|iNQCcm>-zKq9*8t=-K)5Ol!r=ubp0>)pF-V6T%{wnPu>sIg z)($B8gN$eB_EoV{DR$)&+jS}_LEHBKy!;CO*_}6?PKLO{BPaF{Ten?yX`gPIzw6}g89K0zOK0SrGHWv2=8(; zylT~T4e}>0!+8`UgTG$%k|YB)bPq$_P(l(+n>XhsLxWdGAQP+T8on$t=;&GG&}75J zA`V{*UCD&&8jHWy+d)SGbicTv?OpX*rduEIEYI&k-BfJ4y)+K|7~(D z1dg{?=c9~e${Kql7@18|&VY~-ER?AD2L3Mu$gl17qGb~LpnR|p`BOj+E( zgn(Lgj-&pkIF~)JxW0Z_o4)i>lXKSQ+}9aisD=EQ9f@aRnI~DoppXKQFR+dbwYP6c z7AotE_IQ{Q1Pcd_urGUK)UnZnZ_k7WTCm7s^CUgYlO<21u**zR2^_LYHM zhHa^x^Y@ekhXB%v{A7^%-{Ui1>GUx%t>ri<3wYcv7J@Bb&T!znFn`3C;W-Wj5R7KV zg8gpX3r9r?!u+H>6&Zr^?dkX-mddm^ABQ@|;t++hwoDK&|y=6_=RScRC6D zb9-#@zu?Ubn~*eb5|G|rYV5)EWZ|>rBHtRAZHm{zq$?U=XQM=q&z?)WBQ>MsCu=hd zLKu{~%tVc_pK^5_E~N-_so#(ccU@jKSDnIWFvECJzeQk$l2L`Z9M76Hvu;yZ#LQ0| zfPE-bAsH*+D9e3aJ+^wG8n$LQCPAy-KNgTl4dB&Qu%b{F)wdTK;$@Px#9-tSmcSAs z&~&)PI-hf{!klB}PVm-`q2+vFN-skKx32}V4JhSuD*`F%w{P6r9WQ=Z?!HU>$SY1u zZC-D#@T^2Dc(j9JF1*=}`cs7`)WGK@CfU!?@jfJBJK#Eb&L$GEoqU^Pojfb8DCubD zg`FZvSil!!bXZblA;)mst6``?fz1w*sz_SG(}*x|=-Z#Q@NTu|9T35F;MeSFlzkt+ z_^4MlBZD@NQo)n&!{3ATskYtKJ#%U`L)2r4vV>MLzz+s?aa`!Zsxv83RF&?ph69x+>$IDj{dGl8_&@C8UdjsvHjWGO%!a1rnfPrs1^I-mX=tE?OEG*fqUb=^B z`A>jcN5$gWPyenTnIm9HhqYgw!3#94tWdOIz-0lZJac z+n@z3Us>k!WqBCGg6DD5F$oeZ$h!_6Q^e!ZJ44Pymk(YH2c0U{*P~RN*H>V|8?jqN zb&2S1jdro=&eDefxWXOb@gT)?LsIK;>h6K*-inO&?mi=wLx2<6vDbJA1HyrZ<20j7 zO!0M4uKQTtcwRM)DyF6z)tl=ZFG){%L_sAV|=Ydl%=L$~O=pv$T<|ZIw(er@*y3q~ z5;X8|LDj>Q413@6c80j;EF&}}c=`>r+#&Sb1JhHRg&$NwwM)&J6C&>q%!R>C@0;f< zi$av|G^Sz*RKk(@9Hwznw1r@3J@G$H-~tvH1Cg$yo82PSW8{p+BE82fnGbnf#?8Wj zzma!Cph#4^%A(I?5{>D^E;zIS2dRH?%^Qi|>hY9kOxrc!Hnd!E(LN0N|@^TQcsum}iHKBlIU-!l-paDBjUtAZp_qV7}_|e|{=g9735y6g6BZaaJMI zm1g{|zG6}9SylUrn;Z1lm!y*%UVJI?e<-U>E16KJ9jm&2<~wJd_T|CaP9wXODU@zc zMtXDa0@43j*AyOYS>Z%bx1(FMd0wvWQB+l9z4@ElUBIz?#t)!P`!H~m4&-HbB@gM^zIZcNXj^QZ4KfCg=SiFy63VT!Fi zeu!=APXJovtp()%XWKTzAXShS3GZ36 zsNPSTz+F;wTzKfwRdbIp>pG4*VY6z}N^AGUn_0p6bGi9Up4J+4Z-rqC1`dnROvz~; zd3o#JUYIkk?;-iz>2G189V>`r@PFLa)AGALvYhO;XAXs$Nn)k`0eK^9=R$6rn<@*J z(Hm@@1e&_5NktP9gmL(Z6y*lSr2uZymGm}24AM(X(d=5F%6ewvo%X|GIGlQ$a~=mE zKnw{Zy^Knjrct&ksH)nf`qY8oiWj1@_-fKW_AoSK+G7B;bc6S4X=2kl@!lsn!vjWU zUtq}(qg!;$Bn>z*z#iDkk@_^Hgx;fgM$bwML$%SuWtXz59G5x=4-yXu$BLiG)g=DG z@d9-4I!bjsTg|OOjHmqboN4->oaIXKeraDFVN1)@pYAy|BaG#po;Qy^S!*;D zkxAiAn}P7V3BuowZet`i>(wQ@+huqnlno_uJ9Bz1{mt;S_T70PsL|%0uX}b)3Pzm4 z&TZ>(-PWFfU|80vo5n?mB(heKXK<)Na6ob#%>7Gw>dlK~qjr4dx_)#JOqg25YmCXR zy%zqxOxjx86AKUWGMvcP5$hD%!f2xT<}=Bi<2jf9q#RPG#o;l1TV1ZxUb=l+VB}pN zr|PT2UtB8+4|yB4l((e|U3DjRh31-a{!d z7S_W*qwHvX9*~DuENDlX;Rp}-vLlQUuAx1e0t$OS?&WX7`e~6wiS7}xe7V!FM1>{8 znIbZ^k0FAsC)qlsPkRE;Q4!gG@XS)h zxFQpSrX_4bb}m$E&1R9_m=OFTaoH#|+8L71Kry+D(2<@2(_P)iIM$;D#^eA5nwQ~9 z`}7DRRfsauF=fii@oG^{{cRw6mHB)#45Ks15W$-7t`hUACVa{Ks|$0|x8?J&2hD(0 z(8Ok3oKyUPic{>_z}k0i>p28Kp4K}ve|22Pcs;1gaXV4RAi{!Y5&t&Xha-x!mHq5(eZYUpd1Rqe||e9~ouCY_Ex; z_xql&ew>%$w+1$=@a+KgogLcL39K^(UT<|5>0-Q7UhVw4>>xjp`_i#ICZZ3VA~wZe zOHgcj>Q|oApdd@ea01a-*a0~=ox(k!YYp$}2cD0?)fskmewsyB8N^$OWtEyKSm#@Q zZK-CsU@6isr3gVuLj$X87GMJ;?~#iCo$+BJPa1zFx8F8La&k>e8vCIeToFZM`PwD~ zqS3Ys%sdflUYuBfV!rydbUAH*i)RJm)wPQ(9D)n7PCrYoK99W9ZNGC);Z9v@xpJ=E zH9#X&X6Pk_4&=oW>X((P{WJ40+5LZc<}15nrs{>>6~3ID3xGY;$tllh8_D3 zWxNNhiWQTH)x#%#B65cIU-jj+uEB=@)j6~VF)C^lqRWgcE6lQsd=^d0OT$HE=39V& zS%97hMEr?+y`uek0D`_TdyLskD=o;TC21X2t0AJuRLp5oq&G~%Lv*UGkdQKMNj|R3 zlvqgoMpL0)C1$B$&F}F!P>6!JW})q1%_%HtY{yYHrrW^1rYP+m7806}CD#?V_&npI zUrzjSc)hI#{$McRhSU~!Tj}4OwrVzCRuZ3kC8%%}0=+iPLz+y%BHB%OvDh;812H4n zsn;&vF4xzAUbmy_yV4#mP<`a=O6m(hc_TNKJI%Dp9ENs!EFqxB8nODsgeY z0Z%^%deTJtznm3>?h@b2>P|=&#Bi?E{J8+77hE+MlYoMrl7L=EmY?;Z!?iEiQ2Rhj z{ur2Mgid={ZOzNFHjw}kfMkwX6i=xaooHluVl3oP$4Dj&mC?FGxcRl3zRHc0NR6j7 zWA8v2i%k~$3kL@v6Gz}sZ}FW0zM%9giuvan9~;qVco1pS(>VR_0KY+>y8tjT-)A36 zHeIBDLBa;bFFcJJLC7OVB)IBsU2ec2Pr8_ z%dj!s)sk;_U#MLr$X*=0G?F*@(c}Q;Ocke>!DS!5TY!1hhP!nh8+KeaqyPxX#uBKe zd`Y6z!B7EKEq`&B&JcR1U>->i)6VBO)0d^$;i*=Gg`z{3Tbl1)B*Y_JvtcDCx2w0@ z{UV_x`M+Ks7N0LzQ7ekDPf1hM4r?7x`;q~M{l-bor&0=U7~3Mz2MIb5IKfA`|RjbcqV_Nv2gwk`QQUrc60k^gM?!-?I~7KzvQ%>)CN5aN0z_x{uKxGJnn3!y%__H*0&LX zAi`dt-5ae10gdpDwtDeshzuxAuYJ=xd+~xux_)`T7`BW)6lP5h6G_xq&VCY!nau!A zK(fE3?r?9^kFAXaiOP&u7|%T{7FIEMt}_XMX0==p>fr2XOcv2JWAc)bzb42oFQ7sy zna3TpuN2*!e>3f+FV{T*e8BSC=QP+c@Yo>GZC{Dn%t%)`6i z&|B5fOH#<1+iEAz+ABSFQ0iq1w_S#GigGP}FazNZL)e<)9+6ce6;`)1Usr09B1q~W zK;C4E4N2JRh}t9$SZ(UBn3c;fHO>BD<{f53<+G2zK-$d(CuAFC z!J0%d{6|%8$M!&aE&DvW=Mp#BXz$OFk~fot{Vm#23$0r) z@EB4CNjRZ=IJOpHaQ+qWpJZIeKsYxQ+%?IMZYMZLJu*yuZ)4|SB!Wd$uZPegT8G}mdE=rjq#AX=eeU9><~+nEwE(#t|(MRfH=hXBk2 zrMk=};aCqhfj(dWQ4uB@1b32_YHC_`WG0pp=rKqj9;R4>c|#n1ZrSf=uu0oB=QzDiYM?kyJ3k@q5oR!qV`YW zR~*nD#}l81({Q}HYH}4Iyb)6{IgeFo9eN=v=p^!bp#ud{KYS4;EiR%`4RWs@G^mHW zw5Z>iX8r1Qb5ZMO-yQk+-`CfPEj;}n3yL}xtx#3fkWJl?4oY8?lpm*-=<_NB=m+iL zm4T7fg;6((R|tAy^o}~>g)YE0RLc}CD}@|cl`>5gl7Bs_smQ+4(?Ucwqu7OBu30yz6cXjkXfVH~Z(--Jz>#yAZ1o_pLT zjOiV7Kj04Onoz9!?U?4Q7u||Ce&ny8F^jJh6gt$0G$Pzqs%}mDYYZ_eu}>BdU5viB z^?j&TL;zf*DNo2|d>q02cqL_G&3fvWd5NDxAGLw4Z0QcSLOgeax2nj~4Q0(6 zx{YX@Er$U8uF`2I+*9!{04khEMtV-QJ(L>=5N&MGz5ie#wyqInV$vm5V)qN^ghG0Y zZCO4Hw*(5^xOQXZ@Hv5*BsIditmu46&8ylMjRs@Sf$3~6-^*=K)Q-_85|3{?R^vPK zF^9a%Tr1AB7~0KDf)1~U3xMM<0JjiU70xhFWpQH`A`lsw|ea#0?%u&8+j2Y)P9} zD(mvz^$25B-+lgQE1W1FO!kBY&?bRs^+{P1`7pKslUIgwn5@P5QPo|AOAJEN;u3tU zbFB+?6Oj=?Pi<;w;2hg|PNwA~5L*;=#e=-mxj6w}Mi1_rZzHhNyFM;^d{z~#j`uKCXE}bv!QPJbpj;{x z8EVi5VBHVV7&xZ~!1~jTG&Zxk7L!)t;TAHM*qM0;@0b zSG!-jN~fHiC|;TTLlkIHfdULJoE-Zi(dV(P*}yla_#1u!HThzU)_aAKCmX>n0#hQq zA?LqNk+4bPk=iII-T@9_GlGqm7rO0BxV%si zZ1bFsw%-GODeY=9{7^aU7X;y%ulP4;<&PLx?Q|X8&vodsVjH{RL?9u2+UHgrBq2X` zQvw7O9`(o03U^`aGAy@_fUa2pxb&0SSrDwa$8?zT!zPx_;S`(GAMFhc$i(AD(XF1xXL*K1y zONxlQhqH*LmrA(@R_Hd~Qiy5lCp70>imin28eqLQ5s-j{Hr2;tDlYZI3xJIv?qTtw?xh^v2awq+-?6huYXDViX$M*JKv59 zE~1*#rCs3`T_Kv@-L)4|Q{vG`o||vo0^-Bdq_s_8@u%Z zH2FV97jC}SQdu>n9_R2Aw?z|^3D05k9VvDX?-u|@lzc; z9uYcw>PwsFfH_RwUc^55Ah6S(Afkt|laQu>k*Jf7^<)G$pzxnkV!yP-UvND{=i(l= zoF`UmX1&Q;Qd^jd;(;VRtPJm71Q}Z~jNFz3QU%P#R;@y^ApEf46&B`gjH1v*t_t`6 z`4Jh-Op@kg`!kXQ=)kjfY3_34lks2$d<1puL;(@R zXLqpT$zAql>~%0#S!WafMK0x?*WuLMCxSRpjw8p8h=MsghC+UiVTjkDjdu$z8Q_ej za>$i}Lmx2DN(|_pho&{`E(La7rT`IJa85P1hx(ALR9JWG$faR!xtKT&PNBxJCxl8u zCyBYUq#ds5K=)kvb+lx2W)|2Di8y>09g&!H^Mq5cMC}%cf)cDJok)<&wPzw!*KJ?9 zB0(xH?WLFqby%_Jl_>ijqJ=O%&qzbDj@tGU4HI-HJ?-i0uh!=DNK}57syI?Lk(L1D zztBv=z1W^;V6CiS=RP;ZV{o4_heMh$Tb`)ij%g{(b`E`jsm%JI-&Qsjpo4c z&uTZBS?|B7r;N7gI(3MN*e2KG+;kcczqM6FnKpy6I5Zj4^}o8YKC$Wrb>%4h-4OoU z3;{F9=Z~P>-=m{&S&cD1TCLe?!>?85aDUBc(dL}(Kp{uC_sk*V3o+q@GY5Ls>Sxr zl%qf3&%$&ybhA?YHK0}#T_C;^`gkVYLAuPLjF1Kl2*tX{v*!k4Dl5pU(fe-sGFhd# z2_-=GgqQH1M@Mg+lo1;*ui|{LP42JsIzwJ6Tn!n%$xGy5F_1kSz zPHa&8PF4M?4bAy?7mc^9Eto-SZVy_uq?{?_6ub(+5-nhgSu9{)L5|$egR*2Px(XUo zSWds|PrwE7MDR@N%$FRV-6NF>8-8j^lL*BZ|A6bUVGoXY*<<1&zZ8a9zV@)lz8^+! z=Y|r5F{zaeJa9=p9M>l?(4)y#<4-j+n(9}NVMqqstvmuamP0fRv0`Qr1Jchz@yQdX z`nP_=x#;5;eZV(Z5*L|%9h@Oz3sY;`)!vCE|8d^N`@m)-t7{?SDSY2Ks!XUw&^mXt|FP8f!seEotR(DT++^|L%ui|rS9y--UmguOW1%lq}p*W_QdWYh@p8`ItIUzT_|!g7d`P8d^J|n@9-%Rvedal;*{4Azgxy&jKgj z0DE!h3uQ1JQ#L(O$1?-{{&t{byAf%IDgyOE*Mj_H!`emt{x9#o_^CKHknz^Wm4#D> z%phx?a%R@%$)Xkjbg5$A0sgi$93zMFQsOQA{rW?0SK2f>C#8zj<=jGMlwZ z(Z6SeEJUAF$j{>cqY@ICmGN*{^`3g*T_Nfh_~|?!^x5L)9G=Xb)lo0gbbxea8gH}2 zxD0$~#sL;}<_S)j^s}{@6&XBjCp#p5~cfU%pwFAYuOd?jTb+hWm{awqJtfa6ygG>8P zn)!&%%kr*Se7OmEK!*S)4(3inO`Q6QfwESrhLxRdo|3TxC82?5cB2UZE_{feIsFb z;uC)!U-ddZkGtKC0k=2mmB(VV)YeZ zsd0v#?ML1Fd)c0Op5_nJ%rU)7Iab>C*AIErrQ|e#1obA_45WR0I-anQbndVXd7l*C zdgY{HU580;uPk8E2TU1GeBIm!Wyk(}Z`2txQHjFUghP!udBqJw=F273cWX!jft+3J ze6ksPGe#AFc8aeDFV2cBmb?(N$sB;5=`eEpAY7;M3cZ5t*evisvAjv@6VZiu6~O72 zf!;dXwM0DO$d~0&h|aGf8mVX&INk-W8!{<4^lQ#hR6AGf+e{{6awVM?nBEh25NhX7?NYlqP1aFCn2q8Bem%>}ohdso@) zM>%es%0TV6Yni&>sQUU*eG=_rwdq>em0M4DfHzLrF((2}fZxuXCyMhqB{ zqlwUJD#I3D%8~K|-qd?hlF0U|E?=wO7m5Kbl&GUx9Yk#i?e$+yL1V(ZoJIm&f>X2b zVv=na_)~I@{`(Nto@hqA=jWg|nPybs!)!WLKuRB_d7;%`xmz&nVe1s4oBLFUj15_& zAf6m_Z+j{)Dk!@drSLQ$CcS`rvt~9nBfV(U$=SO?(yV9SN!>Rm^wO%eDrb*xn1OG| zYoG@|O8PTuGR;-mum4?{IVMsqcM7CUV)n21=UA;X+T+GTF^H7H+L`n^-!GTtJEVqJ zU_x1_y2K`lGx525)PJ)Nm8~dGgGJWh6Rx@3BzVqA&ahNfT_xjd6SE@a8}Y&Cz+&Sl zszeWm?ua~hVE!+Lw1>N=F=L@ORp!g61n}x(ndo)BvX*T^c{A2+g2d5(uWaAE+BWc( zA)}HzPPsZK>VP`Tq8h=BR!X@HDi_*W zEPZKck7a;YQ|avEQ;f;0Ec-tiDq%>N6b>Tul94FdA}d-U6i~as;3P=mhX5xQqoNtT zX$zYKP|OST@Nqmw#K0#+`1c*+VYxwBCxvEMJx$O|)pO^ZS8N|8gG`aruW9q60j~N{ zV1kC9JnIjUYLGpUA$9L5pt73olFHasS|;bs1C_gzcTgm1jaqUo%HB^zMVb}t!kZv} z*#Edu2O`-eVsmoXWhl9|6P9~h%ex~xMVk9s>dr{zHC#S=IDehYnpJl)cF|0QxbD6^ zAs?WOz1XV6Wp4tH!D?+_gQ;n~ZnY$KmDu*)QNT8*L(3 zLgf- zEg>L3x4L<7dVT;mA6EVTu;vFPBuLGp8N-xE?6=0BHbPBw<2`aZ z!!|kt?U!Sb>1j8cqq}RrnI|7UUHaYI@VheGp3P;C4WfoW==6-@p*1(tu6vbPfbp_Mh&QiMQoQQBUg_{Nf)bUCmbT2o)%zPs(+b z>1{E}?+I!3YZ50($4{XM#2qw{C@8WoflKpJp|!OxoMrc4BQAh?rbU^!rW;(&$>w_P zX+(5c$l5&~#>dCVDs(8hwS@X-=?`e)zz@6aMiXXkQE1vq7W0+&qr-zMI}=O%oVux9 zDi7jP^h(BP9=6m9xf~q=g8tTU99Kp?JYOrg#-}hJv{!1QweeLD+lf~HcSnpSr@))) zdpV5!gHS(Hj)wqgm8k((>R;7QZB3xTDY-7A=N93X-b%m}%JBy8Osn6y?Rk|&pyfU? ztD@?7rpL>ZX-D^%7t#RpAXDfa5EBx3%gc~CfZ;JE$(t6I@@+L(f}sccW%@&QY?73P zX>C^2oi`Rk>C<51R%o@iynNmhws>+s+(nqS3u_s)cagf8^d*YTlweOL)mVP$-}V#T zQ{aQkD+(YfFxC_`U>Y4fsM&lOjKX-9d!&=Lb<*@K^z;yNx2Zrq^KK3mxPcxw&Jh_@ zEKz95QPOd5J8pFMV((|Hv@}y+a zm5Hi@c#zj|9Kf%3?A8=6?(xY4z|XrVd#m|TxS;}pr_CEl*Jf}-P{&~^bYN{OxDDYN zH_Do-9LtgPs>suVrJ-&N$FwE}Upn<>Su9btE4%Oq^z^rp4baB~BnI{#Ui)qY>a2F) zdVYq+0fp3)k+&2E`cI%zxMVz-dITy#~Ej+>u{4h!}ZZy$s1fIMA=bo zJUWaOPUMaei_t_Z1Uz~Tx?07t)iw&QTaaak0C^mXfFZu+IY0XF1G&U0rK{58TwH%u zZiGE^Qf0-rfOA9clxzPn^jlUYRb2gfFI7fb+5eSfdO_KBo#cd|Rz#8`Z`W|`KX}O{ z6uAaA&g^#6{6wbAq=LNkT{~O6+p+HU)z<32(ESjww63U(U#5YAsHuQkUXZbNe4cqw z0yofm<(v-*sjnh7s+CWj+O6c0){*0HKR`qBi}1Q*Nm&;F#32!d*_^UfQ{wjY1^L+E z54Kpn^q`T;#|bGkrrd31kLvC>Ev~7dsoc9P=}=Zmk{oW|6(;#1K&Yeb*&I>gxyspv+p!AcMBFc zRHJ453^#RbC%t)bgpa^PT^3TSDJfRJbM?-xT)G6mo}=5#Z`)^Kv@%FyB`XCtnC zpH(gKoD?c(r?_>^dUN|&ZW4%AsU@Ftb0jQDj$$5v7U!>5^J!B686^=|2A3|H}da~)G}CO)tTWB*iDUh(SUxYFU6I#32tLHU!!6KNWebM@Lay{M z7DDY*%OCl)M!&0b&HBJH0cXlIV5zSem9^ba!L76crCL5*PkZKTvIHMKOrG8M@Q5b( zxxp4Y4Cu2LX{vIoOj(ONvCUVJro1rG9|e)n>Z>%^4--c;*OI)(>S3x=Ur#7A8m8%` za@0R}V?oJrf}Cf-=h-qF34nQJ;pxW?VH!)kJVJCjEd=!l1al09e*)$)!MGj0Gt=rN zIr*;ase~&$mHHct95V?f{#!v=vyDl9Yhh zdb4Gxl?yT*U(msiQ%0>Y?#q_OVZAe^*PZrJdp`gkXHPl1nAxfh6(VDav36DGvUzQF z?chTS4t)m$n~pVPC2;mde}hD&oxRl(k97H~gUuB!v3Z99nxL|KZh2A8_Ip=N1yfw> zUa%vhn^!Tmujb3RzwQrlft`6AD2x7{zGnt^kLD_XuJSCoz>*0#P%ki|545C$Ees7p z)eUF*YIg6DoS0l=2L7iyJM<6+@cv-H*(-n$ZH#eSm*ZYJ`i{z3A`6DX#A}>k?!4fA zq_#}0Bzk8NFJ(xoX*>K&{F>*1L{}WXdx5w-h%%Fkas4{Rxa6+S7yT$m{gqhUUE3xc z%C87I|D!?bDO_@7^H((W7mzrsaLEn>zfhT|GR(0c| z`;{G31q}rNXoz6FCk;DtJLMI5xE%EDl+L^S(uPw)(Dx`&3Pr?9vZ^#&6@`gemDyUbqJp@JBCeM;7P?%cjH17 zL$wI)?%KvMd1s_D5h3m(C&Yd=f2k{UAFDYDSIpTndqTVz=9nMZ@5v+|-6Xou#&;qX zyv(^QF089MF)ZL9A#L1|b@TXRL*fMCr)6^~P3G)tw^n&KmPPxQJU2B%BjHj4K~Zwo z^VXpT56v~)0UJ9nwEE&4X{`Yn85^W0e%AL8Mf}#ECVpmp#L^l1C2R9qzo2RbbB!S^ zLh893ESWl6YTugN4<~MU?4Ip!5nA-TuezMb!8~1|dD8eAnx5lqzag2ryfW*txw;VqN9e+{;x>JmhB9>Wm$q z5g(-KYb8FR8%^#z;uy$)gg^$?Ko(iUTq-F&qJadHG~Qszm%XM4VF9KwPh{jpk6-yk z3{ai$2I$2{m^@`1sd#x8TC1SNIp{3~!Qd=N33bb}0T>bxVX^D1PmP*4f#Tb17z8c> z?D+wDWT54AN9=#g=BM~2h4(-{;vzj#(|b$wCPIc2*0d#gfR`!?%C!imVhkLzjY{mzTo!VU*j)9X$MK&Fd?F%us zCvCX$fDlZ;;QvcDay+vFI2xPh1F+sqVoE2OVO3d@1l=wnpZ9PGMmy_7Vcsp{0SW*w z+b|3yv8W7<^AX4m7e$Z+KEq}D!AGWX+O9$Ki4@`HVNA9xO|evSQ)Ac1w-Zp7*X_pJ z{~fdkzy=&KHM&K2)o3nP0D9Ktxvj{3!hWnh1GE0lO`A+BCTHf^F&;E61ASP(XU{mK zt3-;V+bo2BXOCv9Mew~FSQ_@|f#yHKaP&{m_}G1Kv0$fwm!yen;8oBTa0l7TrV!c) z$iqV9yxPvj@Vm1C2=baClzN?nB@pJ1v2_QFkYqMMM&(2TJj&@rj0Y#^{U$RHCi-CS zi4=*r&#GcDhBqt;z&AXf{eCt`>JN>l`kC4C)?s`EXY%lA_*&lOQ&9lL8Ko%3knWL^ zsEDk*5x)MSxE_zwfXjw?w%86g%i|{+(eGn21gN=vqTp3!_)rbGvHgHD#-CR}l2MZ^ zz3@ihtC@*m3G(X_7d0CsF0V2+6Q3aNtXW4;BN2vTgj1IfJcLr@RK7h;fa#S3^H9DX z|A%<(6Z6=DhiKyVZUe$bwEJ1iEbUy~CT%hSm8Jp2Y8Ziy0w^6j0${GTvTIRjrLr%3zlvuxTr- zdA?c(;dlOwfWXK#8T&Iw-k(F&Rvfqxdz)U|hX8m2JVo4?R38+=9rP56fb7s8QtRsM z_ri{!; zi`clevX|rr^0+{M{q5)N=^}pCt$5&=6nbTXX~JyG4=IT7ZQuq`rxj!e%GX$g?cY|X zRqfqH0}4z-s4Z1s4UgKppLLMzrSo@3<*Uq`3J#@- zLM!=Xe?O^-JELK2IKf`l&mW$`rb}UJJYH;AV*T$n;-pHE5^40U==Zq-a_Y4o+BVtE z3y9o_Q3#H(*Vc>cvog{wLO}K1HB82KP|xILoi#^7t)_yCeBY=qck#$ZHV}u=L34Ls zM95$oR(C>x*+KGFsGjSE09LbvfR`$3z}SE%N=WsG>j`$sr>44GYl%Knk4Mo0K_({#{xDQg1d+)xKnAk$1ctQg8l|oabt;` zDh~QaY%{<^L#R1Ha925+W22Ir;qFKU*3Ld%4GCxdkOXOJR%7(a$rq3YqRzKfLf2hr zhX66{wm+eQrrNEpR=|tLl;=iwMSN+?BkY3Gxc5tjN%xmjsM)N1PDXtFQQW+4g85OGtsiXD0fd`& z%-&QC|AYh4p38{afuvu-HYtD&01w5_-%x-Q)G|-@(m_Qv#~g>u`oIX`2kxxi+vXwN0D4K_dyLV8`fv(96i;@ghe#;YE( z<6>wnYYx!TxJq67ISMlG0Ri` zChMbjVoVweC<}Itt*XbYX@gyiGD0-#kb7hWHhA_acuZ{bP71YBEpC%0nToF@(ZR+m zlVvED%xat0-cL;D_R|Thm3%9-M&`b_uqIP~f6IPFx)6i$){wl~6|qQt@4s2x!KJ3{ zv){*qv?50Wr}pG#wB(JZ!K>Yog%Wr>YJavwZ8G~<57LtI>-gi)FeOE}!DE36S*{?q z_u#X~sfn+$gCwL6$|cxk9P#vOA z^WdFgU#i$8ycyb?Tx=lFD!roo#fw|h{!n}J0VY2%R5%$?3=+H};@!0O5zvRIZrd9* zQxi5iE$NoHkpf;6a5e~Z0nGEtcon}qNrwO?5t%F!CbhHz@s?u!^V!5r5sQ?ZilGNP zi}=8ufa6rBMNk@w5v?XZBDJQTFL0yvHI!5fE0JKs1$r{(GsYJ7+ux0D z;h8qhj=qbxyTKUOAnb_qQ*W&h`(ii&#~{#iWfX>TI7{4+Iq(sTHEiMz>x|}(e1)Lo zx;n+Ydm-kvXYoIw)uh{%HHnct@vZenKd>JQy=oSe2Rv zyWb?*fRz|aG0o!i-mRECo+;ZcN<3UZ$9G<%3V_YZM6}x{gEx?L0e|~%C*)g(@@%9h zLfab=;Ty%domN8Rfc2s7632SfP^bz|Oa(`}&aZ>uq#9+Do~~<{{TZI_8tl%$XZ;?!&M>@%sb4 zx&@{?oAG=+s=YvfjJ~4Z2A9Zz40rB;OP?~8t0Q80i*m4`vePLY&bSkpmNi%~^GiE2 zg<(@4fO)r?Zkd2^QBa0t0{y{uz*v{#S*FVxda!3WKD3t@Dt=n;a5&`2Z4)~uf{}C= z&LeU8`U)B<1WjmUeP79wFw|2+^X=8iWl=NW)FSISZbeBG+qSd|>I28_ms z0B&+B37acN$^yype*U^)JiVtY~BxE4J4)T|2Am_E$YsS1U~in1a`Gb7dahAA!o;C^6y5DhGY z1U9N3M?tN}r$dla1YYA)h$710<8%}6c}TW@g^5w$kQ#nHIqR$h4yyFVCw5lv_Ynh5 z=wjT$M`tb2zxlOyC}&UzKkqXyV*^MLlwr!;Ac?~=`Je}l2TbekE{j`=8e2#hr9PaQ z!!X(wf(JTwF|6^wVjNkjMU!8+E@Mq4N&i4yHnKA(#&4TUehDi;k|_AF$yGVSso0;_ z|B}-95d~jv(mef`L`C<$3y^PWk`CanGH*{{*tM8^b7v5FYcu7ICSk7;_}$&HDiX1l zFpp%DR(S-}ktEt_(vjCY5KCN{zyhXVXBg_j%98k|zGEn*-)U&uQ_2nUnG0y}p;~{7 z0Bf)ENIDN~lPDZw{%D_AR*;>6m|1mw^tqan;WC z(WDxa(N;s(7#%7u@Tllbk%2ED?IH0;zV|Y}I$-ZWXTx(#g}jW^ad;09+@6AwwSzgP zce!98k8$Ud@_BmdG?WHWC@BVAH@j8pd2gikZ`g@zNwUouv@#W~mV9w5B;^Aw22wKM zEE04H((OS;xz}BGJyP44*-6u|{?@1kFS~~Tdo_hybk=vPZN0m`?T?G?I|$zu1y%;9 z=l-8wF`LH=+1~)DR~ox+Y#=0I>HwnG0oq(SLYG`f*No+5Xr4AVo~8r)9Bfmy2;h|~ zi7HyUW?+~KIQ#d>9YejXA3m}P5Wcw;0zgY4)5Rz{3Wz{FYNUOg(4a~q-0#gbC*$TdXd;g9(NijKkvLhYw;w)BUgb^-peF-s)u({%J!X^8`YG**|YAP?A}8RI%OCnEA9aEwnllrVh>q_op!U;?P>^4856+Yy?TeJf_L$A}~xw{R`q z%VQKOr^;IbgD1;T*C_<@*crD6fe^DTm9V+0(x`!L=Fn{)h5&^Hy^ItRPi~qPJ6bB< zRroc~>^Ok$P;d=9CFCr?uLTUv8|CFyvM`6>O?&x)HX?Woa}%MJPlrIZ?kzuY_h{Wg ze^La3y*dcg@*=eEoxK56N3%5t-B9zZLPy2knu@(*sNT+?9y^D~xhM6oi|aRMOmB`j z3q=LMyhpl!kw$Bw??T>=qfXUP)EQS?ya7BdDR1A_DQVK?YK0mE}BHtyLLTWPI8u3BU*m<)T!L;7~M1^Z}+E#)J{k@l538x051JsPl0j>wTG*rNva+ zqh#G57OPJ*vwzQ8`=zjJ?O5il(lXYWW2)_$KT)B?qBMPh8PkDiYOs_ckZ26bff58k z4lxKSM_5ZhZv_*WrmN>pO{JT*_+D#C=%M%W$^hTGRAR!-EB)xUPqH0wz=QD<7`19r z&^v+3#qPqMvm4L{i(yuHZKKxM!!Ve|#Cx`S#!az7Wv^wlMMT&J-R1O$)i*qUmy*Jn z>1bfeVQ_C8m5-(8sSjuF3y`ta$m;6g|CgGkdEz>wy+fv zxDEro$4;73h(oN>x&7-kA~3ug+3@*JwaGPNSyK*<0AS$j2T|@XT>Qd`4iC8HQ6(_y z4Qh0CuhlifOZ^n<#EJrF^ZI8VhwuJCO=F-w=_gsnNebPfMZA(tSRx7MKxqYMjNRo@ zpJ>}wU@cT_E;jW+eYexBzuK%~DrHs%5&xK?VpWSUM<~nJx^#hb!0Runi3i~YYfA9= zAh=1rlo1l2PtOd?sx$z?x3Ov=CdEGX$~6)%ii?s|o@%ox0e2nd+0oCCsq?vZ5c zxx}&MO(7d)C_qQ@#WmCTasN=b97BDsya`ZxF^nm1AM}NC!>HLmM(66$-9jT!P+0bCsRzp5#6gg5tM z49UQ-4te&3EKIIf^p!$8gXcX*F(7tt8rRRU;L`7&@vEg#W~o_>KVt`L3= z{pSWV0kzPH_w*`V<>r3EXh1?Tt@nBVl~(L#!cA} zPp?QqbLZ~k8=b#y$OWVDOk;k-RFpN2S?#4;v*J3%RTgbmCv8cq$IX9ppwSh}U5 z8*k`=7W!`OB-&sJk3H*@1XEzOmD7arCzV+fcb5&|2A%TdNc|O^g8Q}mDOdjy^Vj3wE9eT z_4qn?tA0SecGbgF^}FP*_&&0uHz!RdLh&zdD^UYD$Z4Iyrm-0GE8J zUWH1oHKkY_h(w8I5ik4!DE6nd-WhNi*f7Q!*9Zf*EisLF`UZWxtz>9d{fwoy|Gd}W z|po3yVRPYJ+r&OEQFE>5>R z=%)49Dur`2KsJr;PO;0!wOYYYcRO$7eZB*1MOZG@ek1h9MTOe63EvxoVFhGVRzk9| z>_$Eq1dqZrcgC`+167pl(>IZ?YV^y(p%!Yojbe;f=Lhhx=x}_mkJ4LEc^1sXY{wW`_bX#`}y>*PRsBDj=@s%wP#@_08v1$zbE;^SW`mLWkHQ09H;t9 z8rD%AJ7`m!^4l+LI!q8%cvTnRQi^Q*0Bcl$jem)I1BUleNSB99T1q-F*w~_Xrlpq< z(7J~W^)D(37OvX}aF#qETlAc2B2ns+;`y|xx!;((=TfEIC5~07vxQ6Xm~-)vj+M1H z-bVu&&NfK9rJy*`9EY^~o&286p}y0Rz|@E(up$#JvTvi&ePEbfT?P>~KbEjOOIR`c zo4~{o(U6mqwMR6yn-%URp_L>!$cEM&U#ig=>*!Z%sRZ$lz8S?ytJe<#vA&qoL(Tw# z%U}iDQKq2^wdD$l?nLuYDzTknz(zN$)x@3Wk6KWcbgquBkYd5?TN{OAoO9=^tiP!;*B_v)*zMtP5d%ULGgTqE>KKcAH}v&QrV zwKhyIii_M_q?~k{?TqBQNQrP_u7o7YZQfs1z~m~G(c+TIRQpD#PrRJie=Q82bV%MX zL#`tI(kX`kJjeYip-P>)aIK&znJ7Xd98~Pr(NCmkbR_;8RHcl4_@U{@b!oPh&8f1Y zbx1jcK*xGoX1bIieZojoMlY(t%BazC<`A~hfM$#P$b63C77i4OZt5xA1f_rc6Of6m zUZ`J*?%0wN>~uL(2WM6>H>AKQrTZwstW&dTVuDr<6~S0uQMZ{VHwnyI92%3ybiJ{h zPBU!Z+i7Y!?`n?N?yi!>W(OFj=?rNcgr#f$_+6wJ$=`aBGgA6f*kfOx^khqp@HmqH z|H(JJ?n|9!6-i`bJ-G|373+9Du}FwP9R4n(7o&5&w7zVmcOP%S>Vjs~Vs-I3>pGCb zky_R@QitGg{N_!B{fiC;y4l~ae}23d&3@AsmwL2;tVbn2B?!|=nLq6^PrsK2deNLE zQgzqvE)k!=^hpe2?b>h*C$$KTSEnL3DW*!nq!vx zG59&xyVFPrQ;;RDJ){5CXLuG482J3#_H;xs)GV(RP$=na;R$brZh&2MHLD$^B5;He zfgF^#`U}CtPL!J+b{EqdMHl%$FaWgix z0*f`14Jqq-f0|nPtz7g$bX%^;y8%q@|5`!1TpZwq{<(m6^;Y%eq-XCIM;z{ zgw*#Q4^)eP!xjiyU4Vvy+I6-Mz%rJ^h0F-c|~L zGMxjfUrk~)j%Cwsu0WKC4uK5PKiJ%;~DSNYPovTioV0(lPOmNy)bdl>719#P=PCxfkr6 z8r4)CwJ( z`~FaIiRJPPRPt5`PF}nO%wj7D4)rWJGM_LXkC*@Qr`RN(F8rel_j-yumN3g&_35KS z7`aXty@E*XtKPrdH{(ZPRYOfOx2KR-hDdv&GI(q$3*C7N!d1Nx4*KN2S^8@hbjDHW z>z~rC#J^kSr(-~k#aMz{IwHRmAEaJw_+pixpGT=1-f>#`WeJsY@dhI^|LsGE4D9-( zBmE)~_#=tEfbj4$wE7a3L`Z~gRjwOkl`v5Pt+EFR2k%?o%_ zq&eEM#c9vR+&H11T#&54cCPvAH$wkARPTK@>wM(@9GbJd5uE>P={y7C2zWC!z^j2b zzFQE@#&7fZnj785q3+jDP)xpZkZB9Dm8f#L>Y40F_yElFc(3iNF)q7mzXCstBnMs3paxd$r@vS7f!M3TEMAJAr^p)A4p9S&Q?Z%2(LP z(Bk6kMWpW&qPDQC*5-$crMm9dmgBQYgN3brh*xf)jueKNzJyynbb~h=L;9OF*M*=0 zi>ONskJu3+lU=}=Y2anleU&JEJhU`zi^_}j)ZC-K+ZwHK>N{G^NX5V}?J%@(Y!FSs zS?ZRT9*;yMg#o*GE!-d#X<{rNnCO%EAkj${Pn-gGYf_3Jm6m!8OR+wUqLL`(dhGF#YY0qoBWsb?X`>SG8cTPF#NN*2_B^6?_BUqj z(&S}T!zk4_SRRJ*QlAgz#y!3wl=6J%&+_gMpvd+@=jt9 zeRnGRB&F@&+NA38xsyS!`k`eI5aC~MPC=%89-^B}3JwQ>#XG6_ zyM@|W#nAJzs>2^e$;v1>D1jgqeOrD-2lj26CUkbwI5FqDc8yI0%rrRK68QlFW9nbZ z``#sa+b?Ta`4QEV)%TyUU*lPBKd2A#_hHen<#2!nToH^@+AL4lg>Ag<7cnxTXOWoN_%H{lwZ#N6oQ8RC8-IO zwW(JY)_S#Ow}X^)ZKy*gxIF(zFM{8jjJ@;ODU#6eQgzdM^ZeA#AsUo`+Sf(4%fxt` zkQJ^Y(Zix$27H>IeqkEWTa84N3f3aThcGB7iKscRlhAWlCCl!e#3LSubGF*k5qJeK z6!8=xtqQ!qGO^}3W|4KBSnqx+ZY#XO8(w10*qlr0b^WJGzLS;T{ho{vDp5j{GE&(~ z0%rerZjvOJUq39C_rC1|x`-Q@N0?&xx8JF1;Ih)Ge|Irt;k0w0#&PV->SWw!^QAf= z5L)>Z1 z=R9l|B|JzP04mq+5&j2tRHVB_tfcAKxX9>0cxJ#6w@Jg>qjJKQYM{aoL&$6a>U6$a z|A8WdYc#bLM{i+2{Hc1xdehAGO)cERj^J-Ncs5B>Fd~$8|hbp zr&-snmn5eUExuQ0cDKedyg9kG;gDD2CRHj~l)>Axwa14V5%p7W5d=(AhX7Fac+M$s z$WEahy{|cyHKvl^l_qmQqm*H1V7h|3*k$=3lP%6=(D4ge@w0gMYrX}|jE)xNat=~+ zCj0YsrSOXXRK!(6f(3>)#+zUeGYlQ?x+3v)yZ%ElH}KBL+hk&ajO?|2kpBp z#9=w!)i13SS)>sZ?uhg`-OyxU1OnnWgIAZdzGv^w&#Wlf^Z2;TcQHpm1tuUVguu)! z#$jsG?_LkVWeGPgp8jLjY}6cKu85L^5d}$8y_JDJQVs&EyHdPK&iS11o5RRG&+PK{ z^mdNS%!WC2DkxJN3P3n0OczTumxxfXE=AXY3{UGKPCekroaUPb-|n2^tLU$?3F48I zthU7_>co)MsZotuejFNn_cX~RdC_9>hAzGbBI4ZTJ^$!RQlweA!O*66q#F+!lv=fy z>)2FE{jsl?%pNc&>?nQqE}`fik|~g+OjX?OGhDN&9chkDIXbxL>cE0u zir&8N8Ey0u1;7z!PE$f`szpDI;mfsoGO)Kn)W(MZ$Y9Mrk|W{ElpYfgpK-%>?mC-^ z+B2MC*$?uxjUOmq#EMI8hryYcojm`}PuND8{y1EGpcvHi9{}VM7C|X8s55y=@&^+x zq%g2@0q)m?!uzk4295 zz97jvB6bU;Id?@HH$c9gJ19Jcm7MTmww+tdqg$mmF7UGK{jMTh{_4bYDWmukRXgP zGKkIR8KDuoy~Dd!sv(Ziv}Weu7bw~zl@Edt7V{IPmSxmC^2Qm6O(5t!Vgjtcg};W< zaiL>BGB+y*d*xMd%)-ZD3k>REGylhjw?p&NG-YI>)tCgGlKI3I2y?7{0~9;MtW#$0 zY(^o%TC5%lRgNH>W z`+$rqkn#LodNz!Zs<*C2;ved?jb?gUfhKl2v|<19aI!^O!O^eIcqv4#rRfNMw4TrXHE!F67R+OyWqitFn ziCU@_?4}S*f@p;@$iLxv3th?d>|g0yuG4-UD0}A+LmwVqj^PEoLhU!#OCD92OYy*; z=Arr%?>mg{SO8Bn1iQ-=VTukBIleCE&yDh~2O!++K$+hKjKz{zI^ZH{B)h8?r6 z6A1C1^ttf2Bx<1IRp(P%TyV2Nz7^_4H_aacHNg4i3?XR3uut1P*l|V<3%?#Qlh95V z9ttGB&Se+N1fZ}WtpqP9Xb#ja;2lZ@!-*>fRLNmLxFe#v*2BD z*B&#TNOA`3G4GxbyDiqf?n-RW}kB z6WoQ;J_>tBwO!~efeG6l45@5KA2wqc<^7g%)<%jpzG+4^_EJgKTbjA1=A||sH8l*< zSh(F3T03am$pB|N(V;VG7Cu{DJH;e~pL52K0msO=jFv+*9U@*6+R8=7Et^)8;^0AJ z`D9e3D@(6r-{L7gLyl1xRH>GN1)Hq{M-uuznK(j3_&V=&xoAk!IL!1py9YH=6Mm34 zXAyZ>qS!&9SM+G*mr^AayhE`evRAg4BTX473{OGphFF5+tNTT9-^(rRS}@OjZiau0 zUI>8N-}u@yaxm+GDC=bt{9&^U`=yOdet`K+6j+du&mDlV-!5nfjm8j3S-K5aJy>3q zc&iHR4D)PALteEm*{e&u=cTLWdC7X>+v8r0!PHv@-J{PzhGoTkzT~^Kf27Lyk51-R z{=zr@PV2h*AZ{M=y$AJXF z-8^tr+5j|Mv=Oh7XUm(~xRad~Wn_M`QMW~qMHox4Q1fsM>tclwMG43jef$zDGtE8s zVe@)5bEjWi7OEq5vnL8BQYdK^dOPxLO)#m!*RyU7j1sG0r6IIfP5?k})~``dYg1Cj_&p>`TcVUQU0 z>;A(V;f3&&UrhP+q8h9n)A94ix%veLl4SNaj^xw6B(2uYTX5qj-~I>$HHX8J6WwN} zi4XeKhWW8P@Qvh1G$)P(+Aopb1toq8{6w|7oBtKeZ+_zjNGAl|54a1Ht>#m6Sh7;k zP`>nwnj~zeU1HAZASWxFO9uTp{ixd1(ZjGB%w14&nbb|)15F`-E+4F(0;k8#un%PX zca)-2vAw`T!&DaRWTQDR+m%gYz2L#UehAOTRlLwHCsTgrAFgD;7<|gy1YeQ!zp-_X zB1))siGg8%AjpZMkhPVF<7Q-wv#4kbG%=*mS#QO)`CLJSzcw3sEWYbPPtb~(vm(QP za5{7Phe<}yLkdp@i?PvYnA(qdrnQC+F!av5B#yp-hx8?^rV-N@D7P zDixI1OZDC4L?&HK1lrkhAM@i(zhW(~G#}w>mO~$GP4V|&(@!aGxqX<`V69Sy{>0qj za!(+&PuJg3)V~vY-DPZmRBy4rQEg)Gg1V`akq-3C7`G2UhL|UB&$Lbs#YV!zoc)gJ z5H$aj0|kphQbsR^$Rq0&zepZydCWQjA%&H*WsZwCI4jizj;_`H0>gPk=R1c0m;7NV zHL8P=dA%lQH6*U9#h<2X)b|+>XeQPzR_+1;mR&|!hj}OneFvFH)U*HQ%T>D}E`TTp zpt;=V#>y<9d^LGPi5gnIE!rfDk8mTSq5I~u?2CRB{ZdkHDw)i zJdyetQzc(_eD?V*GexVK@f+_tya4=0+)nBRSKoVRKjn<0h;tDlMQ4Z%f3^SJTO_l% z?q=pcpppX96E|qADoHcRBNd%x9bspYp`yL%9;G)n>T5~~d+u=X@02~#Mi@@|>H&+L z?krEOxjuT6fSHD9oU8;)sb|tWUJYy$zj|gY4 z3xM3|Xo&tNAUmLT<+!;D%TdyM(7dp5my3@};B@rkNz$X8z$wSqzW3v^WA ziIktys*5y!3U<=PzEq|Sous~amR9`Ny;{4NQS5titxM%Soh^4Bp%z4`uC@jpbSXGy z%MmS!={um!up^MFX7$d*`DGq3XmOH)zt!fhCiZXb z)Dv`7i{Z6}&^%mK+Q~y<-zaTM)0}*`1Af!8XRv%UW+p_P48^eBEb<}u?!$Skr|K2sX0)$Nkv&?`)WxP1Y zZ<6uvfo2cL=(byOAh*Ngb!19KxbMW!C{(-R=SbXxg8`I#L-c&^3PO=3lDpY z<7z`M#7i(SFX@4M=auk$j#3&JIWX*0A_tq1U*@dglehJmD5CgQ1=3gl!}_syEV``b zb^a3!)clYWisdjfGTU>&WRzLN_~67sk*Z+dr zv+vLL=H?oYCzI($WvUZJWK$?CeYfn-d{Vtz%^G@*59|tEY20!9cz8?`UVff)S@g!fckXhZXKqUxb$D8lPLn~0YxTMYq1fvpmm%Z~d z9Xze-9Yvp3UJok4Gb2G@_z@Ro(;A7!Ls5Zx$gO+~{H!dLHE3pdF^O?1x(UV`6B{nO)g{-?m3=3(MVvFh(k+Yy0YH6AjchK;k{z zO`ArVQW{e|%ASfDaWKQFP&1S1Sf_m3`T0M}X(1>)mhL#m?vlswcpB+q#)=04O>AO1 zGdQ84k`|I$Ln@hZ=k_*g+i)KIO+*CXE%Z|Prn#=p7^-2#Y^x=LK%P!?8w}xmZ}@@Z z^$GPh`1XM&j&ZK0H)m({)SdGqoMm@WnYN6CIGr6zLTbScLIiKtuHY?B4@kN${OtHK zFnKAKfF5MH7ndPQF4|inmQ@N9_WxSSo(sa25Tw{#W5qg$TqiN2XLGgTc@ zgJ0uqk<#)7_9pxT%ukbsA znMGgW7{<{6KjKd?OM~XeWEoO_9PD0PrGI%5RZSHYpeE&W+0?&Z_fuqbtrWeuNetst z;qCmeINQR3olf5}U2HUY^24w$XMr$;EX9LRMLA+Ee{tvI7-OQig~e(MrY*F>qw@U{ z=ayjHas|pMpxg?F+fBwUi+IXz^U%YgqY*+#UE7D0N5zq+{>K{2HgT0DbHNBvQTLizPOlq$7NK&_-RA?TJ1Mo{RyaRCp zzs*j4aGE%JiO1a%Prw-~SZ{jQbzC;6)!)l)*i~l|m;i3`dD6?h63ko$7-tuwm{pYV zpR}xE#&gcb({vF+aO^VZz?5t-G_I`A!;5rXb%&9JDV4t438Z(6%}`2~9R1@UhbXmu zBx<|KoyIbvIclY|NqtWrl>01@rJ?m5{Qs)DVGMM9;SOH%tjVhbI6RAu$2Aw^(=VqH zi~m`ggZVc#k8}sL>PKD@H^W?4sjlET`Yh{x}tX6|-i7A|GY8_E>jv zU~;*m3;-zG-_cBXLfMvAcZ@TdQb?}a9r}x&)oXe22g^Qb4OXMv)!PHaen!%qLp$n; zO%sL_I(X>ogTm&#E_IX4I^@#8y`^)!v2J`sb1F9v-a7Q$MJ)oKMBCu?Ie{JC;>!A+ zuXQ15{>U!uPc;cLH}LHorp{uaA{zXM03fi+A)N!|tp4&@E%lLa>X#KxVn|vz@1)-# zKIjOsCXxnBV4o@K3~69io)94-taRy`nJ+iNppdDOed@WGFg`~}ekl-k3T*FR@ADSGf6VqdbF|H`Ih7Tjdqo}ML zB>*(0VB*&v7SpW6zntO~#_?Mm569lB=#sTPqN?nwf~e0T!pos%`h(82Hp<-wYWF&oqWsaq4Fsr zLx05USsSuG;#%+v!Mi`k^gU8dTZBiiqPjzenh<-%T^^uzsu zNlCUFK&4EmXM$UzrCw}4caQbW?L$UW3%iXLg`+SInNpFkYT#Pyt}|>mtKNl9R~QO; zzgy&QY=@f>|E5~^~7(1r0d~N3Jvi!rJX^j-p zkJ-avfr4k^BCE=X>jNhAXDz`nTJUnIup`!go-=0Si8$vlK^syf6Q;; zY+7kZy9xapfrY$iW5L<=|M&2yF5mFZ1nlqxSbEhe{q1Dr;FPnx6{Gi279f?6&#GzY zY3NQcdD9@asOf+K+b{l38^SrLMscn_J{smAozDXAYQ?;Sn-P+4(VHe+!Q zg1eRc{TuyUJin1@{k?p+pTFgXm@Nyp=Zym%zA**{Reyu1f3XJ(XgNuqO*RfKHehs6 z#~`bUa`k~UQMcQ-&M*G7C#f9IrtyuL@iAJd{IjIN4b)*KWw_tQ{kUD6l>bZo84S3xlF z5&!~BV?e76!q0T_BSvZSPLK)jF1bh})+;eUe@moq8XoLHWFCaqcPF);bZd%d8}E~E z1-^m@S^9?n&_35Wo^Qk?uWU~Uaa%x}r9wB)yu`A4Eti2G9QyeFiXL*eESwAkSbd4v z)3juV?W3$mJ;Np9M}Pek^L?bQV~Q&j;RE8Vo-dTBzDcr;v=mM*_@;9~DshfE?4Ktz^c)x$x3oCI>iB4fM9#xh_1b=8*azv|PAG&FJ z2bMHJD`euVQ|u!MS?q=|3q?dDo4<%vjNM4T7(ej>W;UUsi%};8#twj7t9~DaG`#Dv z)DEk-xrleXqp5>+^1}syHaE9kcklh$d6^#tpJ{mzMLjNZx&n%0J}{*CHCXRvOJlZ)3wCZshgxc~{;y=iSb9G=a?yF{CerA} z2cH$3id6G#w{QYpb|~pKvb^m9vpL~D?eZM(8+bP{hg-iHk|(*SeqGe>qhYvf?h%-^ zMkdh({{^y>Fp7PslbH1jb8Q3>KRDy-fIF`S@JZ4K;kM(+855hPsZRNJNfi?(vSgon z;m(NEEY9G4f@?ICJjK#L!VL&Rk?IdR$KR!QEBrmvbVI>Lf~>HyC&p|jPc$7{t3Byf5_cy-Mw1)q);`s^?9BaRQhS_2P#3@pe(oC)x+G>qCO~ zRLvZfCWnKq2_g?w0)zu_)RexlaU>!SYW(RQ$e{I7G5KXAGv&@SiMJ#<=QJ>qlv-k;QjG}61cA8Y>vtHMqMl?)a%uR8l-u_dA0Zb} zGVIJwR=?*A(yGD;rl5(6M?`R?mJ=l5Xd$PH{3ZRj&lZF!Tu?U2UDYIby)W7%r!)M1 z2*3QOBZo46X}e?i=V`Pf&9A9tb4zAyNRULrHWyh-Fq-=>CM)aoN2q^6>iQ3~lc@jqVPu$&L7fVV|Mjc~30~H!6Pe z3$SD-5?gEtN$Y?kh*izg%EZK$h5^u1*XeS2TK|^SNIJTmRpV(^RsZOD(tq~P?*k}y zO^5e}_Plh>K(vfdy%Z?C<*JsXcj^MS4Hq*%@pkg(3vRc)>)X(E1Qg}-E5#x6f$@TJ z6!g_}YCu(hWYnHigw;es_d!eYUDRn99a2PMt8=;28giY#ux+4WU%%v-Y1xf|I4kMD zQf!@Cb=76v5$|KUdC+KOoPPpr2)?AR79EA8V%QEv1P+n(7F-8RL#$>KfH4}3zSW$_ z06) z=N!cAMk*>|;=kaJ49eL)VZPg4(6@%CD63{~2jEw27@U&7pRx_gNvth7R@8Ha;)ehV zp*9xj?hH&d{wtCZ7{+l$xJ8a(c|#t7McRUzF8y1GF|cPql!yOphFgr*mX-UmvBa() z%K=3|xI*>&KBNuLd=~#HTOx5GUsGrO>XX5HQw&EdVgNQOzm0+OgaQRYpp;&-Y%Pz|K+D3q!mu zMvooUzet;D41LefZgnsmB)U^TM{}R$lIUY`2h7eJJuXYYH>$NuKaKuZxmXOVIH`l| zUFjG~^@-Uz`+siSh-Z+|%1n3{(V#NQC*&?C8x(5?T?VlSYE%$P}rfPP;!OI|=&v+;W9}0!K zRM87fu-6_pr+U5B5b7WBF2^gTzO_Xo-bogF@D-HM#E>A)r+}NxiKf2KnrvlVogW6m z%N;Eh5|6&Z{5Xxnn(gLLDV0YxC{$zOXhJ5T2XHlkR>^|^`f&T=!T{UA)({4t(VcL|_W$g1i$srzv`p`oYM$4FpWjqkFThMvCN zan=>3+9OGA5#buUu_m$x`U-cK?tS4Gm|zmnHZ9Kgb;AA>TH0&c9Lq9m_C$vO;(HuB zqJ6}VAh}>%PygWd5dV;yNG%~eG_;=&%LJ(>@Ug_w#;a_byl#EAmiOczp@&@vrd}b? zMUimiyp>*lS!$phk5UqTg@%XaKNo2l(Xp=gyXRdAVKRZwmgsKzI8duXccn{3-Zo>Y z2DMwxvQmmw%5E14PF)RS^C?Y>^xrL|Bq?nC>g;b2W2e8VD=-QiOQ+(_r*6c@{*^K3 z*&ti%PAgyTGRz2pKpa;(h`OCAwe_XS@I?x+vf+dEkq!WWNJho=RzqCpZ9}wOAl5j&f&QoAZN~4O zoKO=V<9lZZ?f9S}v)R0`_A0Y6^gMvHpFP#BN6k4_qO@9359~FI(h;)z@M~?(xGFJ_ zy$Z67e6P>CL^2R8qXu#TQ$1wVP0osAEFetE#)~A658TyD>o5*7%69NH6SP1Zq;eQz zS9oB^k|iy(7j*0GYxqHq@S!CLyRlnA+z&40sF0Cb+bs`nDD5DA=(bZ}6}Mxi3L2Kl zlv?XX7GXLLx;ux!FR|JmnxSd$N?gsBet{eKJtru*i?z=xU+iEY6MSZleDJmMX5)+Y)c>{4bl8SfjswXh1_RC5GB@5 zlL>7daVvYTf3N{@ZvxXhAz;GDg2NE+6Qy>s!qX1;_m23|^ko2X398vYbjzN7d+&Ue zkm#>FCVYv(U9vb6j75Vyn9NE?8h8S7KJ>>#s8i2?pu$#-)a_WJ$z(_d^dSV!~Tr#%Jrc#AK^>rne@6b&POAA_wO7 zF621vZ=`2HjG#_P#WPU*5hyN+)EYJKvmAi2i@#1N&gFM`iT>%K7+$ydn(B)sW)kTRf$$j546H1g?nu8Zmn+_I;}-|UtfOxf7pu} z!%G14c#KL^lys<4KtBBY6&;iul$+!cQKu6PRC5nuUSo}}BtELQWQqce%>|`G1x{wO z)lhwS5qC5g4R%)7c6Xx25J22|kVYjDW2AvTCAi7JGU{v1b3got z82hrN1ElJYao(X9VTtyXFi#Kmj)p3Mm$*5VbxH3eI#PN3CPuwX0Gn+d-oGSsftRba z$&&W5+?%M8^>Bxp%+;o`hLNc}eF}{@`CDV09j>&DOfMD8^|{pu_%l2*-gtN$L4^+{ z8--j;>&y~bI1E(P0mak32j;aQ0uf+{ zW||TWD3c7so27TsYviaRNuSlzYRejI_rCd}dg z_2Vlfm|89&A+U0gE7JUI;8b?3zbz*j5{j|IUz6{GDGF9pDg;X@S|-R|ORtNCM1gM$ ztVdJS1Kz@Hzn-#@OwDr^DvM#bQW4M)ueh)6 z=<1e7I|vS#>v}H$1ckrm;pgV!-NBF^cg78~rd%&xSFUof%1f(mF2oOF^FD@O1X+(} z{uBeB;5=RPc`=j|L<%u@EHC5YBJE@Vakl(>zyA(k(8$?-08nowb_xDo_Ao6sNWwB<>@ z>Ei^H4ae|ZMXc@A7rC>4Aw&`PTS9&=oZ(At%1^5c$ddpZx1ds-6d~oeA*sKRG0|kk z#u+cOj3S(cBy`KI){;!fqyc6vv2)k_pTGi)kX3YmE~j`P&4EB6&)h0}%YQQ)JudJ6 zH{^=h`kZ)-KRh4~0dv`zW8urnlVUq2PLczZu1LE~I$ODK`^fO+KQQ7cR;{bTc3)Tf zb{-Ud%lKAxGuv)Z$f5X@F$$FJ_y*mKrl8?L!1{cju54=NUl_?cg(>FcwNt-U@>}BQ z3YdbuH}OUO%j-QvdOS`>!WAUURn68fQX07`i>E7zd6vYRvU3@WdmNsJ0BtdI^A$EP zmLDf5#t#40>~bAw>wPW}!IwIOp^#wfUS!>mtRTl~iP#a&CJk^P>Yskhc*O>uH`+!jv7uSmTa7O+GMOX_Y-NFyo1dZky~wA-y|t#rN>VDGR)w}Sz*vD7Y{ zD+z4%*b|5m-sb-|Qw3ai`z%Qd_nt3&NYs+$n_YByiV&6Ay#w!b%@-bFUDJeAnWaX* zX{{za8-!a0wX@4IH5}j`u?vxn87&qCfGTDO>|NlPBzX&0P-t3=XPZ=bo9qp5tN0F7 zIQhQN+Kt6`Ke8N5@-g8SJ22LEri-9Yd~5z%swfAgDum(DC{^qGE8j%JO4vpzJ#pi( zT^GUB5G`DHb@L4q_$dsD-}r{H(I$gM7X3QRgo~Jt)Wq;cvz(y6FBhPPYhI^<77gq5 zqHvqjkHGf7Jsv1)dNie){q(n0n(HGl*+q7|5Wig#NA9sJMNw=bht_j|fL5RB7n_5k ze*kcELX2}3td~u_nBh0)ar}Qy(YJZS#&=38Hl@nC@eIs#Es>C;CyF!HuSo)Ud2Xj| zhX%QoVL1*4=>wL;%JBiO9fov)anO5Ll=_1j%#@-kUxhX4o7jt?0Y z(q*SesOrne8w6bdPoV_*q2qNcn(;9=x@OBIX8X0gIZwk^JBy zuA2|4B$Pz4A|uN~bqYeU`4(?fgKT(azT+CqXd6-;VeX}TE`+G~%a|tO3evGdce4{B zTTr32n*Ru2iK^l)JL>HeELc+(VN!wEj8uZ@_u@Bj+Jf?ZB@yEd(UpvlKKHL{Aa^A! zcLCIN_}W29t3}ugZ0YPA@Q8P|s}s)G{p1Cq-qoLlU})1}n(C5xo{llTXWPQ`0{z~@ zww_{_VBAr@7Ob@+Os|-NtI4pFRA%tU5K07? zA9YBM?aIoY^{fi*pnHX9Z_G!xM*-Uy{OV@j%k5ynDBA zmu|}{Z*9@g=3UvB_+*QFx$()Y>;4&t=}}LIaN14qweLB8SVs(HXqaYtE&>?G4C=hj zlmc8i6v-RGymsg-92cj#IO!@^=~K&qs}*u*b~r3_+uL8R>Q;e7`h{m5_uAi?rvL7j zqpO*bXCGE68Bj@x1eZv7XQsqPwg89v$)NK5$m6n3m*gWwxjSEdHj#pzKa9;wvt$vt zU&1nuu*Dp+6(4Yh3ezNP;9@$B$g{+sm5+vy_~V8SaqBA-d8N*vv-rOKhpewtVnbf8 z%(X8#VSC2K!p7oh>e2hwo|GL*(g7`^#j+dEznJ8wda|z{KiV=g@J7>*9mt0O7Rspt zz(gd~`=m=c-J?S$?*C%eHBLVDAPvBJ10}KmO#8#ha->uGGP~A_^MUt|*Ju@il&!Cu z5TdDFo~h{2CTv|Yal3n2B5aPTpB4G-GD^uG*o&GY^$xEO7uZ-Xgm&nFZ!xus%r@(* zYlUp#bB6?VI)2k1f-C4gP6+a&^W9R^z4!?Yt&pG<=@?2f0+&da)g|&ePOs6WWw&Gz z*td=KNUbaGI57IEK8oEfz2tc#YSP~lgcc%)ezfk1S_=7jo!2MrmaOX3c*yj*uHF8B zqlc9##sDU|3VCLEn>QjdaIq}2;xb|*^?%){+A{NS z4uxOeJ*0ceL<=FBl2TaKvxX(D6bP#@I920wKxge3kKrQ4!g+BHj^C9` zJA@WYR(mK?@1kO_u%Aig3yrdP?IB+N9}h$8i|t%L9?G?m;gQWYw(4~z0)_Tx!UW-2 z=OA+7Wkq@y4>G6zDP}-XIcuT3ASPq+%8wVRm6+dHr4qJiSD5ALKd+lf$*&Bk{!3*< zNgyZ7RhdMFL*ehnLdVA#A-o3F#sH`c^gpIULeH$=#c*+Ac>~_~Dhjis2%HA^pP8kz z;T0t9FRg~RKR-ykTahgD5{AT>Fk5%bk9}10Lzy^;&eL$*liFN3Lg=`@pud zZEjeM3UobkSBT0`w%3w1E~qI_Tc%W@Q)al~vWVDEQFtT>Czo1wJH%Xj1Tg5OS>Hs6 zP+kC>W7?Td6a(}Jm4XA#yKXnwoRp>N&tN&DC-%hKym~4yeV1yZo=idI@=(oVIB|-glB_1r>qjusP>% zL}Moyifc4hU2~5bl5L~D7SC?IZ}<0z{kpsfVHJZR<4h(Xe$E;aE_2oSXId}IE=Y0w z1czU}xwb(Y>%ZIQ9o9p-YqH|Z^lcm+`P^&=cjuv)Bf-^LWQ&A;Ige7%Emkt7lOyGb ztg#a)l3;Z!=vqQ_Zej>~S~A~(C>PM8K%6%A$O#hEtANyeedqt;ZV<7^P`5LZbl=KZ zO+k!2Nl3djDD>(^Jo{AlluI(eP{G4x5oo>K$aC$0S2rg^rp$w7b~{o(v)OejPumuH zc8-?E)be+}pfR~YyKn;A6AN|{Iu6`LMA`${C0pFsmUxjP*_oQAz3j>XEx9M(Es1R?nul2vcalEa&n+tA1g>tVTN;|u!lH7Wx;<`ht72&=gcj9lQzw(; zpJC?!C~>&-rj6)L+(OWS(ZtK+GOSp`*cg_iIMIe4SxvW-kgO}oIgP>_C+7EOdX)Jd zzR(amE{voGjbw?v3gyXn&g${M0>9l~=IEc~rk z12C%ErY;1-gQ+;qG@O}x+(GHQIKr1_xn%w=k8SyG@uj^AIPhmQGIJGyNcPpjw#hkE z{9<+jzzj^Or_=2cvT<|pvdOUIrIVAGre)@SY0$ARx8%;UQ|Jgi9P4sQz<&Ur2~I-t z*76dRiReb^{|5l5)I~n@Q={$N81x9odV?oc7y7(TqoRX4r!)q@>1HQjdDD)LI8&N% z;grl(6RMo?e zDTe@9Kz4N}3=t1bnT?*g`Mj$aUQHMB!>EXs^Bl=~IF~51sW&OCqpGAP;>z(F$N=6MK5{{vGI5vZFr87tN#rTz#bnJ=1rC2}4RiGSml!rpi& z!dUNMgH%eZ9Dk*+%X=sMH|9;>=qHFjpg5b3cvg1FBbLMA!Qo-zcV#%wqJkFf1Z&J>;Eg`X=`h} zNS$&~2te?4;!J_|I#PEli(fL9$M*?aPS-N^+|KqgqkjY$H;&(B9rA|(8Km*+43-+_ zlGocG?1;J&z7$dhNUS_~*Dyl`w_Q6LrZHI@8-Xa>t`5GZt{v1)(Ul5^yP>;s{R__( zk9_(_f!_0LFr#E8#3|#{y67IrA+?Kc;l=x$os*e7!NWn47ngZ`Im}W$GMIj_*IW)z zFH-Lx`#r%58Fp+T7ZM;4s&bPitWtBn)*{UWxg^F6)CHkV&}!ex^IIC#>PDR2sbkma zdmvcSSc}+Zp?z={VMClr8VdP0_qes_{CF2Pm}Ldc%vn9aVtfz!yb2dLudW$RB#47| zubHhgs)__v%b`IUK+)D}y#w;vNyAKZ#$1C7#*8-jf1X!>a;|5l3?rti4+7wUO3#I2 zvA)=tlGc6NuRZRvf<{Gdmm?P(GMX}{4-$u9fc5U@gH8y*b)+cMr+lzy{R0{iN* zR|YG_=$;I^=!?dIkhLH2^j_k4q=x8IT-nlcq(h#=_vT+55g?m)0*iR+=b@ae3*c1# z2oddyA0r7={df}%C)o*AUd4^A3UrjZ#WFv|ZeeGY-dz^K=0bV`=fgj!$3$78O2eaf zr`6d5YW{yCgAb$ak4IwYYdXFUF#^p9NHsS_H27=;wINeQlz!3%D01`2{KzOK zu&ZOKrSEB$hr~t#_8al(uP{HCd;BsoBVCoXwyw1#5D@Sk$|wi>)IEe}Tv$1#;@3N1 zz&EMl*^fH$nae2T>T5geo#+a1EQ@f!IkPK$W5|-G+Z%7?sp4afgGA))E_XRkpf@$g zAR1+F@Tp!IrufyU#1;jja}qVWavDl>_q^%MDLq@SB6@T^l+>jqkSv zyEX&_x_xK70NuD$8A)S05Na!@SupbtV0pc;6=>vSHOg!F4C?dn*m$L2$!R7s0;uYh z0Jjrq$yjrJg}giaOf*uYe95b%)|GIsnj}fV%Y@2D@+L3;|U|$&Agm6MX$}qPx9h)=6q%voN(aNqH zPX`7L|Cf$OM!yVxFwJ2E3)So=MzWY=>wgeFy`~hzDH?!VYD|I@BL!rjReQ$}E(_D` zBXN>a_d{J|(h%+{uf>JFkUyjz8EC~1)zvn6Cf|AmYb(#qB7Stzy{m@w*i*3cqueJuPnuR-gzkRe_{VgaR% znF@q~B_w(pgBfEDw*7x!^v@)j`A-}GL9fYnOe^0j53H$sI-ieFfno=LvK2|M)d^a_ z^4CNLTadZTr-5Vw6SI;FC`@YR>4$S>tVWfwo5$XW^X3sh=1CrSFtpA0O+FV5bCB7v zKsh7GwnrYd);Z#EO*}RaPB`{=Olm|8Xu^q&5%G2b^FFAP#pJXtDtqP7bdu5y6;Qe} zUOf<7NSLB5b=9vA?-Y0brY$%;B7QBj%~`l!MW`A@V&_yH!hug9$!P+N zsG#Y=Lx!eEG-#OH-Zw7Uz?wj!uWky(LB0yRtAw)MYA@Q!>btnee^}j>yQkZhKs%e# zCqrjLmvs@Hr|Y=9M*E_r40T0LIBYjb&^D3wa9(h&abT6pFfwZ%Vv7zb*RPW=RZ4Hb z&~}_n3RZWT7E=OhXBVtkE*rMwANs~P=e%4Jgk@I7D&Dd1hE!! zPH$^vc7$h3OAe6Gu9m=sKD~o`*d&_U)3yp4(fs(PtBx;Pr~esxJ$=63`$IcnH8!rq z)>XH>*LYHE=4XU@%`OFG*=*$$43RZ|t>6If%Rohb8*J@C`VcNQ=b3peus)hV$Cu7ANN|V;JW*z1aw^fBjn}| zXXBYRBCgju9oD2}y+u9K#kzeg-#;BWH)?0XK2={@&n3L!4u>9>lY(4kaB^DqE)RJ{Da*!_prLm#<3e8Y!lrCl)7 zR8?TTI1RYO!0o9ypJ@10WI|@ax0Q=04t2MYG^zpT-0|l9w%M*-0?g>njz|P`>0x}t zDv`jAn)c-o8;Zq)O4}@En14d0fV)sSOEjtRTHMg$Jq^(T$$r0MdADcpv~Q$ad{E)G%b{Z_~4hBg`gJ=a$T!Vrfo#_Cb~yi zCHgu1o$ivH2G9vXYzo{Rn0(eHq6*8T%!l_cVF+i#r>Q8Tpf{Fw=>8>f2dgh!0}Ikf z4m}uSRxTgVc>;hlKH1gXT3mrp!y{{R-nV8e^YhxJj}v<}i>44(4);Y@g{i*%ur;7& z=?4V)DZQ47&hXAV+FH*yQGF5S`^GD+m^E@3wA0gIb z23$?8+tGMjU91gNOzp9xS~B8+Md^=8-r|L`J>g6EE@;yXz(6@nJ0k)9VZsP2{q0j8BS* zb}knmbVV4h!8D*Q>hztm;>O95M-eEEYYgajh8>#_to*^2Lvwi5Z_Jb;DKq@32S>!q=IqlXix5+$hBd^{^H!|JqarmE9?|_ z(rZY=#^sl%vgAM~;q0O@c+;=UXS-7hQk;GhHsP(Vbngr4&0*;rYU)?_%(6RVviL}0 z&J~gg{`aVtp=yU3sh(q{5^eIZGl%3XJs5#fv!CmNgX-L4=om{;-&*7SL8{29W4jCC z%?PSkXV}>g#%UrRb0jlhWN&3t(aHs=PL06c1-3z+!%51SM1UDR0m&sL^ZPx{`v|Yb z(rHJ%yZwb3KU1{^3C0u&1;sjMhP94UqZy@pmLoCk>48bFJ>wCIft{q+X9l1`OHLgr z5U}kguVK+p>&r%2T|#D{y?1hUs0H^V3E!!!N;co_AEgPZFacX&(K}Lfod6y`^uLUb_g@ zpLUTR&c(F@=K~EMVs6Ns{pAos@wZT8ueA^Nv^8U(o*)mFnN-W$3pRPUR}lA(SBjPw7Rfj4wN4Bl(^e4J{U& z6Ts2UNE>MZp?3}Zv!2YmK>TNr=A2>4>~5K_ZdHEjDy=Sa*r+f4()}{VJ-$d-*?L)3 z#n}&o z|7+O)bG`Z5!lo1J{9S3I*O4qt^0XbYL?(LpiPU-nez{?RRH=j2Pf$1m=*O9#PTRhM z=?G6kAw#J$-QC1`7qGWhN`E)0od<^Lly*XmDdL?x8G3TRs}n-ODi6eXf7bzhdSP?~ zo}@chc^01cM=RUClpV{0{Bx?rT8fm(^1U>7_8-%?mhdVYf@Go;#{Q>Ea8a@*$07-y z$A~&cD}%PL-9QN>i;5$EU|;2+kLTF5Qz1egyQX{B3JU<;zm&SGe>I(59_kQZDBSyp z0LywGk2^||P>$`OD1P%md|w(-@?Z@=6T%duZ&daAV~35uZg%Bxw=UK(S>PMFNYL$e z0_oOCuj(t^Oqa*9D#Ij&fo-1)*!~nl$8ea0GfqnDQ3U$XTWn(cx=&nN(#)Loc9|Wb zO5hkL^XhO=o<-ri2SW4m9cMZ;>8_b7zx1O%|K=Pldd<+bQ+0fpeZlp0w-_FIa4dqO ziLl+~7~SRWm!YKnoqmB4xQe5FCbNX6 zy#nbY!mRDv;~H-=H_WPcjbD6m%9iIY5t0LU$Azxx+MSOPq}0l+Y_@9T@=-z|1m!ae z@N57_k*%hEXnF)<2MbZah7TI|uSsbBuCZ67q(qBpt`TNehy>GwatbS|Rq$%Df8eyG z+&r0?>O7={(ZPv& z3WjXuWMf-&A}^Mfzbt=b4cCo+D#~Wzwj5+Dus)|#YOYy$5$V55dqqCpG5LE&rSR`j zpmCzJk&W?d6(t$2H+K2)?W;^GH+(XZ>0}5soi-DMO{>xgI^$5NLR`1^`1orqR? z-??<|AX=OExJZWpkdMYc?w%3UPJ7O*ycQB^scDnZ0VZF9TZX|0#vJ_->!Z)x34^?w zqo^I**in5hF*%p4zDT5c??|(}8dmPY`oe(8ZJOIvdlWNFY*k-3O0S=lV1Zt@Cyl&; zr;a_u6ibJZ8N(2wC^%wQO$A*m4UJPFoJXFFFKw(bhQaDKrcr$+;ZGtk@Cq9+v`hJi zv!nEKKuL!*=7oers4me7ghFV5G}DY%j+s;>;rt_p`w-@W>!OGAb$g0T?-^7~+5;># zlHooFBpTz73;TDlFef`G(3Ur}tu>r?n9pidk@6(#U6Di_{j8&$>AxjZflM z94?EY+A$=qG6Ye73Cl{oRB4Y85aEMv6dZ7CpYV}utoHyAp!ZP_=bn|MkIzRWyasg1 zug?2)?gHXtGCSu{Sg{{~w&6m?r-dj#VCY<|ZC_cvEKA0!!D;obw{tzI|8wW)NxeNE~~&SJ1u-d)Brr%y zW_{oi9t{gQCV8!qXuq`Z&>-jR8tedT(CDR6yMFMuQP2lpVO#=tT$n#aAudljPIiFV z_!3k@8~dJjF7nD$U=1%HO|dO)w41rD@H?i-65y!6t02Ji)7ocRkb-woEQw^S;9nDs z87q1&{g38j`%5H-GnG}U95vb)*ol!zGoKp7byWxkC&RAyU8yp=20zo<%WeP}$KAzZ zcXlNJGv@SuwUY@4{K4_IC$%7|7_uu85I;UP7y-uXi*n(Nsl-109*P8%ikf=ixh@xa z#?#OGA$}9g=aBElHWfeONFk^DP!3`935OB(5AW9MkoNXHXd*KmjOxyO87?$}87m4v zj$B$cr^ls92Uh+-BFE8gvVt zDx%#MRbYwyhX&9oKELa|@e%}iIRP09{CfYKhsm`5krv$^7m479cJJ$P_8EeDi70*; zJ=c6f*OBMTPSW5}^3KF9D%d+v?>rB-t^B&}NJxgH-2Xv@O1t_-0csDw-z|w7m?KuR z72Fru`(jakF=MGZuLYqhfm+)U_6fSWdkm&Dl4~8+ImpYcqDg1ht<>3vZ+F7j3=d7t z`_~c`NH;Zta9qkHmAxuMac|~M(rpEt`&Mf+WW7o52N%8Bfeq13kF9{)y~N7OrZ@?O?QhG`PRkYGEz`juQPYtlQ6R!i= zX#Rf>VeJSc#av5LWmJ#r)~eOT?%!kY=aWdBIk^2P(FD$i0EPH0uNpmVxaY>rNyeAl zF-q#ElL`LHtReqKW1i*B%W;}xdDw9ifI;$*jZM}CtTFxR_?iJW0fvJA9KhphFd3p? z{hZ9z3N@voqA#ziTRu)d2^pdNM8Zuo@8x+9pQi`k z4hG9l8DARrvR97mIJj0_G~SkFn144A*f@c9sI~QG3LzRRX_rlg!b+^9C z+#0yw9KES zrX=++l9%%OJ@GHBit}n8DiH}iMMU7He1dI!+KF=jG1Q}6WWV{#l@h?8t?B`5*kRj&$v55$qIUBDodNsEgCW=Y>yM{M&C_< zI7|_GRu}`A(k6_63C~z+ySGIt5&d(?!$gn-p&IQ$wO6A(cqPOob;n!=K{+!<$5XLE zT}?{DB*-!Gg~GNq#I~`+h&7BOEygLJko*ltDooDpL;aRl>obJ`arxHL-lQ{!OGo#8 z$`;MdcrL-CHPYHVBUuzNS|mQKD!3j7*?qdAUcf1)FIb`6c-4l&CIo1P!a6;cf!2is zi9d>-*`>8QBB3;0v1h(nrmKRLv>(J|GMa3+Ie}chy-ym1{EHRjMJiOi0@j`|OMfz9 zYOUD?HyJLvW!@yRy;L;sPTA?vUaLG9LWc zQi|A~M%;s*so!Cas5we&|1gesCc5Cko6Sq*Ev6-oF7)YYq7pj(+U`)fpZe56?Qv}g>E`USf3k45=fzmxbyJ|=r!SWJ4Wjx6$WKF=W= zm5taZdx_KkByi2-P}YljfDp1rK}sKgprU>93yPj&Ejag37}3YhMfS0jGu4u+ECt!x_hmz`F8 z5Kpu74!c{$E19V@)hGQ#a82e^G1vw@@?J|ZsFo?=_qVRlpk;f8U>&3l4aQDoqGX#XIwWl>B0X@YB;rv#KgpFy1_c&(l6lDhA zA-tH=Tf#zC#Q71!)Xqb9m_r|E=jxwej(gdSefW}C8z)u}YFu@Y_QNq2x58=EqX7>R z8tV%XW@`Q3y%?{b^>HK~Q$EwHVsPathjDDo5bc*9W+5g(nz!NK^ptg(7z6RIM12gMb} zDswm&x?XlH#&nK;4QO)7gx4dEl-ucWYZI>`@wddyS^ymW!cqI7j&dw+97_>qk&91nNU4itv%r7IYHJs!&`1im zolayGwIK1tgw}PjhX5O+|o^MytiN!wi)gu|3R{b z3p=Dkg(ul{p)f9w@sctT^Ja6fzKdAD41e#i%}}C>IBe$H*TV~sYC1!HhCxFVK4Xu@ zM@lM+W2CTp@E%gbL6#VjipV>e?z%a!}Kzt%FRjDn~0VUCKBq z!*cD$M*|{myUefC7Ub$Wo5`w;)GC)1vX=t8sjed|cn0Obz$)r!U@uEp1D3LTlsH;F z&c4nxSSW#DrK-^6WNI?VT>Pwa@Gr$M4;g~`yDuSm;)4U^M}guJDgUIB6?cbEH9WS%aUBk$2@Wy2d>Jy8?2i?F}Q zk`JrhpoZ5|erDGR&``Y;(8*wjKNWASTRk{H&HUV(=C4tmvSOltK#6LyT*IH1m`!B{ z5x~`>2n}008}Wv#)G1b2i#u4&l!TP5^`BRQSsJo<%_w-5$3L=-xU zT?Wi}rUdD?Cvo19^p53RpWTBS`4MqbD&_6U${XG*mNqR;FcDr7t*2_r1>F*l%Ti3J zgB3X>JLI`TE;FZ@i*gDp*v#_Fy++bLtHU{?uHjXS-csykY&$5Gx)pj@7^`2 zs|mq9+0!QJjF&LI13a?Y;tTM0?wsdj)Qk9__q&mS<_L)?IA-C-0joF?A|Rs7s>zo7 z7jVzp#O5fwqO%e%45Lx{+JyKRKlFiO2Ft!@=}MP^1M1emSD~e_m`96COuqH0ev`=L zFI94JHFf+dh($5iVlR(}lZU8Ts1FeD0&tAj_dz>YW$EgI)?zpCG2zN z*-`6>o`zdc676y#nOO3L3VF+dA*~`vsMc_(2PGM_o4`6{Q(#~RS7(R%+Wyx zLS=dFFWHrNQ!krMjuE~Ypzx?OZ_Dw!9c_^$eaL%OJQJDq0Yvp<_*gx>Ac1AU23CH> zAN?{NpDMa~(&zHQl??>x0)2C2?SmX4RpERK2sr1+QxoM$hDThMK~^Qd?TY>M~DkbN7LMSXn7eKLzlzs0NJV|E@o?@N*X!K=tr{X zWJikf^`CRHtMaLYfkO#HmZ}+y_u%se}eHd+s4--waws?ck)1XasNcY z5q=V7_3WRkps7Z-ebQ*dxqIQ5y(>|L>jyWFy{zK2xqOY{z)^P17;6gC_tj0Oa28bS z9Ur0q864`C(C{pV%A$Av#hx6K34gWF)HVR)Ks-}+bMGuh|UMKt*MpH*5KRdye~ zE!Jz3GYBBl>jN!%R@-^1e8X}y3zaaJMKuZXK);&C+|b_$(jE|jWbwr)&v!Y8M+el{ zty`G)$8l-i3s)G8@-wpBid!-5rQ1T0-JfXYy3>1&e{7rpM6jbQeX0h$hBc3?%kST{yoi^B*h9dIt;WRm!*6BrR_Ia5p!pZ%qi40Plh|~D zDjnvhxjfZ6*>W<60AI_ZFg>E}c(QG?k3nU054zDVFJAg zrUF$mHyUC_L4TB`Cn5oq@`t*!N|R_du7ucpB^Gq?y*3}OUemxMscOOCi3JRKb=3Q9 z+7U2abMo201N_@c+%d&9ZX*?dubv~gta-A83EWQJEZkj~#&rnoO=yF6SUv{&=<$`Y z3}E_Ux)7(OdWup4lX1!t$@``4(l?Lij$FYRXp^!N6<3flIouUq)urU$mjY1cnI20z zzX=tQcAlfOA(y1|-o$nD&-+Jk4udbSajLVsJ^zAuPQth#4c}#!tNfB6X*Uh=#lpMWsfc=3PLedf=tb8=Shlh`;Ml><+!HL z95XRY1A%6ppE`ccQM4ara{Ubmf#U;^-?xC79j<+|w00R2M;PY$hk*`MCK=zVdr(|< zw>1o8GT6Ty{=M-An~I6AKOecy;uo<}BNeQd+Io&V(f(q=Kv%@RUN=g9ZMD zr%pNNV5Ea|g6%IuebGBE!2~M&`QFXL=y&B0^bl&%3Q|%q(HS5zN`VPYqaEtDM{1-m zAjn8V&%wooMecw#E8RCh-D(zjD&p905o8;;7s7`C2lSIaDtsx3xz|%93?94cIO$rU z0+k3UYqXoa^Sl;FImc~~RhH@%JV!>f{-9~nr-a$c%UOyfx~**?UxW88OHyD?>;Pso zPtanqgH><>j33q=TStZeTaZs(uslxtVYDP7Wq3I&o?==3hTNBxCdFU{dy|#pAr?0q zH#dS>m3g@?8nyqB2Cv?VVTOkwR5;n2ejA`Tk}DJo;M)6iBMC1yFH?N1f^w=|@k=fI zD|7Yq5KE!{U_Jn^jz@`%4wYS3-q(`D$u$_wg!;ECAR_UJcR#LIO;bYdyCe74Nq;a9 zBf%6rvq&Dx4(Bq_M}BMga_S8Yz+yUF3gsr)h+VPM!O99zJuXdC;XD0;5}mrIqQ77S z(g_}7c_<(~1+g8UV>RE$Jh`X!!_PyR4vp|8pQ*dC{O4qBYp7fA)A{V^ij&Li!}#`$ zq|mN`m&!+;{sSjQI<>ckg}OihNF`X##a)Y&M<%!+>QAXh8t*A$r{T*>D3QRmMO1ne zY@&+O>C9@sY1iMldnt^fQaE^s;ta~Xo}Sc%CMr8>ABBEt05b}{bVW*H;@;ovI{$m( zjzdwztOqy)D}liO60fw&85F~ zn?7iOl*WRvAyMV-0p$?1G028m|BGvHFImfN5}l`>m&Ve#`fP2Z_5&H6EgQM4K-bLS|9wB=$o4jJrUwmY=^6#iqmOv8^pZJRgd9%+>U(3!tDyDeklPD`jq> z0}RarPIudI| z)4@A#KKakNxcw!+r%D%->%I|aa9esN?-Ig7PL_$;le&xoc@Bfl7H!*ngN@;2bW5ui zbTTnkmPN5dqf6d8Kyfbt+ydlw6b%QuJ;e1LsFZSaLy0bX5>;6;s-<;b*@$|ctc;YN zaqcxiK~T0k03>{^&DxwVvPE=_#Tmn%$cKD}2PxSLzWa&A*%bMj_BSQz6ann6Z)wJS zt_+mA&pm4s!gB$f!?n~F)}l=@PVgLKNb==5SC5lu!Zh!-Sv4+N&fQbNN;UR?LW{a3 zqEhfy#N<+`A>{ZyWQaKIuy*uzLROJ2LDd8VOQw$}G}j|<%-JN;CpGrZt)euPA-~lV zLF&4g+E=sjp}DuTSd8xmwx#~7zHb@7#AAKPO)sQr%^?_h;wZyVY z+T|s|zbz(yq_8k~Kw3j>q$W(o3o9_7h#pNMp^#0-F&v|puXCAmN(|e1fofN7^HL2k zx1@=ij168jo<+qNn%xi%L%u?q0{cDX|4)z5=be^gtjcoDDal2Gv67OdSH-b0QkT(a z`?XGnU36La8zCtncL_4bkuy;^H?LY60lqI^{1SwG$K#kXALu7%Mfo} zlEaj5MANU!t}a2WRZWg(S@SZtYv`H-B&rg{NG%?t?up*ilW#se2n06uIrI#zLrtxQEJ{c#=?^bw}c zSk(@2;p!t~UYEAPRO7p&t2IFtH@t{2?7x*exFJpXUT?LkyUqys&=-}6NRe;gOFb=L zY1@)CA`PQBjx&YKxdD`wkS7T`llKIVHRGkQuK5aiC?K*z!$$!7=l9?Y0M@JDt|r~d zT%>w(6F--dO=l?_Z-HzL@)a+n^fi2kK~kO9et0=0)7Ng5y80_rDl9Ye(a{&tSW;G|6^8)s--Hybx;Zh- zwZt0)UT}#f%xJ|EH!CV!pNs2uz+grk+ulfTft4X?v}FbrLF1PhEUS{XOx3Oca)A&R z6b(~`A6BVqW+5N53(@Hj(;wX_&Sr=uDThZSra~6MI_`lGxnu0fob+uh6NJk-vVShP zTTytEtVN+F^?sAy-p7p6aE>f-jd(qTelNU>Kip>~3p0f!c99J(Ly|koh=S7?tW+Vn zo8{#)5EwI9UUW-k?xPSxH~+8yLT0wD)$oDjDn`XNT*B}@^gKGF(D|vvch+8BzGF;) zVn$R;m+HZJ$ui@4NV{HKgxfMj4?CZwOo{yi{#b?^j*4uIJ#q!Nrdk5I4g?a!ldQZm zh2f!>-*{UB??SM?yVXM;<(=~tAh?b&y*F#b=OEV~91NP|!u#PS+TL$wek|xE$`Kg# zxGyS({ae@uA^LCX6n2jN2-jXrL2uC{TMP$Qjr1Z!+xKP^;PU|ngdq+|(1wgUzZ{7O zMG$5y+|QFCcG~$lI{>8p`4Q}kp-zFYWR6iLx3DDTz6<9I|G#gVzu@dhm?F7N{@Rfrs&*zP5@Zk# zDnO#ElPtcHzb(I4(sQt|R;JzZo1~ftsqijJPXy67&#FtNMk>$M>Z`)d_qFZoE4>auq?|2RatH^to7dTcLst z?&<2&6vHPp#r9AU5o!iA+wz z)@MJtRu^{)^-QIKy~ed5my?Q^zTRx6C#fMIcrOoE25l}UTr&~_p<#lQ8B>q2+&97%p*lL*+=kb zRDy>T4MPJqS&-%{NJXRP&5&krIl=|K8-r{@K(Z1GRNoTBV$!h>{w-m&R`8JTqHI&) z^&KLT(;tCw!;NbTb$qo_zCe@?&HxGTI}2Gbd=yb=ZyF+SDI$OkSiI+^HoZX>tA^mG}T^AKK>Fv^I!IHU{fXI25aS#Fkkd@e{q&MPN z5K2L%1?BH?3|CHTqy9h%oca-NUm7o{rrHF$+_d7=(B3iq#DEBq#8-i! zs>jI(wQXY`%3SEO&E_D{9T#`)pQZy;9p{wY#dVL(U#)n+hXCZ|VkwwVo+n!EjSxO1 zfronu)o}0SSkD7uZ{IpB1O!YKG1K`f0$iq({Hs~n4$`9CGxT= zhiMx0!YJBRmEy!nkKf*dVB60DOE!v##qD}=?&|k6&gmu^85uM^Qgqf# z;T{YphHlC{k-nIAC^Qr-a}P{2RPcsvpA5a=T<_@9hG~Q4QD3nUmZ(41#2s3*}^^3lcHS%5}&l#l-%x#Elqs8>huKt-uQ5QSWvSW z;7#?`OS$q^rn0BMtL8|17TciDL0^sOipbV9nBQpKo*5e8Y~c7ypVpgbhol6KgRZ>5J+K6qM9N%L|*%h)CsE(|KM zE$+7!Qu`XzUVc}A_%hfr(yGN)qo4p>H^E568sUL*jVR1YSlr&~U0Mlri&$75dYF>g^Zj-8F+JaD3`ph^^jXjSuGNChajcF>{dqB~T4 zi;Zdx39>=czLR$r49ZStlh6uLUBa0xxBPS+tf6s39jTnoZ+D6DDdMbL_FF*L0|Q*r z7+bkE$RGmR_{+k2dY)BF1{r2BL~3se6uK2&(ruN!VtaB0z;e(lVA~JZ~eRCyv~D+WyCYfVB=L9DPU{(9@Ys6F+GAdko> z?^rMnmZZ`JlE2l4K+UAdaN(_3xby*ZuG<7M^RqiBsi)EbI7AZh5&< zXbViWlXKXnbR0B;IG$k|DGeN}4(RGL z=95zfw`$lH1V7DEC0Ta)X&f=HvteNAU> z_a>_wF8=}iJBv-uMjAyg4rqn$NjI}gz0+5yI%ug~62F|@99p{94CkW@cD=R%xa(6r zSLE8Y2$f_&|DftV@^?B!ZY;4M2qI&JryY~ZXU}ZRj=1E6MAZoD16sA3|9Rkc|M*bN zNq3m^o5nNmL9nDFmVw$RqrCes`Z}2@3E-dEI1O7kXn|qmYAwQd=G3Bu%QxvoD zbJUB&B%YLJC-^{ctSyUI;e@d0>hLlfIE8bAyc{RblaS|{E(xQxRVsR^%vGwjG{1dy zantRW!dUOg;?u#?O~_8F^<5Vwt2m4bU!>nB1~BAkm=Etdd8T~3B8j^L%_E!?@mf$o zH;1Evbi`!4+R}B!4b7N4Wvvhyx&MWs=Ny24G6cIUk{!bzyx7J3MTUy$?}fI>xI4Nk zT7n`0?PyqT#q1~hC|9M?qR^cQ5nm$Q!=L6KUK^nQZi`CGOl_w~zJEUmIdhYg|9`0C zpMQRYqdYifhg<=?u_io}1=$%0>EN{vbXoelW7x*Kw>^$DgTR@!Tf-0VlK*J7t?m6s zePdS)pH&rve>UPvptl88aWKxse!9`nvl=&!k%>;?ZaM^q0PAeZt)B2(WqW8fWmiZA z9y28jPo@B~Lmrj|I||mV?|qJ3&e|nymdnp^J{g#?pMW#J11y^=Rxq0}bzQiMT(K5u zq?+`ZoK+sqLgt;kO;fO|Cj}{5WRqm*u1Q>ZJ9Dg0TB-r3rf)?;q@}W&qGlD1GkL4D z!ey4sK5>=mkrGgPx(pk=j`~-HB}Rea8q4-tmvNcU)QQbQSIzbx4WqU|m5=l6e5+p2 z!{;UJWYLVgi`xl#XZ+)@nsI+w9n_lqIQz6ic@@{OVdj7gJ&X>jwj5s2U562{4t0qt ztWjy?E0wGudMB6`gr}lwoPGfJtC}s?L^qTQacR7nidNvG7Lznu#Xm*4r_fU>%z)sN zVoXy(F)n{DfB#zt65_EL^v3nd9#x5-IZTBPusFW=>mBhhJA9WZCo=hOPiu_dy4J|n z`&S{QL>ow#{QR<&kS5-&@p_q}e!am6>m7Gdj5I5bn3B#!Bp;Nxhy&N}a^h}+3A`mA zuUNR?;?1n3v`~?BuzZ-V+p@!lAL(+W!yWqkq!5{fkWH$}vB4zfSyn4|D0^+4w>mhY zYS8CKw;!N}_Nq=fAaIkQOxwnplfoce{@hJ67L?QaxH8Rhp2AQb^3#Uv7YYFzs^jQ7 ze*F;-(`=f5z1xFdpfiad@*GQJLumWxt(g`{pn-OajcB`yb#pJ`a)DZCp~=OnF|-}+ z$VonSQe7PZJu}X|o*|{XmD?s3muid${PYp^_PlR?3sN(Nn9~l2v_&Bil`B4VpIZ)RZ`tOppLfCdrUU_=R72jxNey`dPJlp0a-hTAqXn=gKqm4P=u>p(L5$WI;1c?85lgj z2~uvIZ&?YD$EFbj_$)p?Sf+FM>Ky>cUj2rBO@EpWDONUYR}byVl`D~=ncJ9N4yD+HWNqb? z^`orQ&zD@dm~a^HZCtj;1WlA-5zQHJqTUMsQA9>IPOnAO@1J2Z5x=1 ztK};PMsvZ}Ol`9%%$JLZu*ix*yOGsFx=lL2IQWw32084re0dimQu-out>1{fY}Ti1 zFkS#3csp85GsO#+wCSSfr8WM;; z!i~Fr0?BdfV!Sd`yz_fp}{HhY&<>HjZ>5@w^PrRxO+uLxgL{*^L~V_u1C`w2S;Z_&YY#Oi!saFt2sZ z84KPvr};02e^{skkPY|&flxS2h1el7@go3g!mhel;3@-u=C8eF?5D&@cilb5Pe``s zp}*D4P0u9c)h?2~L{)^2Nhq-D$hSvtKe24KHUj+#D#|d9+=QmUX79gsOL{z zVE!>tt6U^$lhVVQ;>iYb4~dPZ1pv`bl&#Q&E!~u#_7uV2bJcixvt*plr-0HSG2FEt z6w3FRNYt0mq`1Sr0yR;_jfmVnHmi+uf)Ch$^Oi|u`oCbmkO`81CDZH9<446yK6{## ze+h5rsk2>sCDSFcY^E%TvW`cxLH%J7EJ5sTrfaL1udq#KqJflN8J z=iBR=L0{D8tdBkfZwumEz|dM4I#2(^m=Fvh&=c1Z*ZW9jbX26JOUBMMQ3ob|Bvy3* zD#$(nqH1>TV1f9?Az}V&+9JiE6m?3oF@wl>?2o zkL^lQ8B3mpfnI0Y${y}(2Z%H|nMFQ_Sg+ST!{NCIg<&vWl9~Z1#?mQtHD||&UaG&@ zzNlnR=-W*h7=QF*h}&EhgWvve+G9!VqHcqoxtaG|9CAfgL#YBrY$S1TY45G=IKep9 zq?!DwnX6?#TV3yBPU(>JVR!z=QT13e=ON!$_P7(JTrCVnJtgUCQ`;2g%R@l+1)P#h zx5NNLK)k>0`A8C#l2IrtUq-FjseQ=64b0hEr8QYZV+D#S_mDBx?5dwlOYRNNpu zmStvBwl8d5b0ac{wM;TTga~i0-bbEOD&tp*gWW!VT+z2 z=ETC%m7<06QNnE^%NAmys!oOp$WT0~$q4U-JE9V(bP)xS7+GwHd0dw-kM&juzk;~I zD63rr9){I;OEvB877zT;V-!&h#IKv5#Tl8`44M!`oLgeGgkeWQ11skc+?7H6+F||ji8ml=WLjFp{NZiHbDOrd)Oc3)6Bh<>RltVm{w0TBMsaXJKf z#`|HM2)`_{P6BScVNrp62as%sDSL)`zeRTG^UQyO@+%ce{J$wXlNs@_SWTv+3@5WL z3mbnyEKeJPNDgqRBU=*eCkYB#GZ$JbvW<$|M_ljYKX?Q9&L@^~7dRgR=6X9%gr^@I zQYhfUt(OyX_V#jOPtK^(srXTF`qK}fyV6iK!?YSi_sxpZ#ZW4I7j)>yHR1HGNUJV@LQD|8YqzR+_}`q7 zQ-7b1YzR->oMSs`qcO$h0*ldwr0etR45Z9CeMlcb zL_qYbD!1R@|H(Dk9YKAR*@cgZ(u+v|<}{_ss@|UzoNS@s5$tG8`a3W}`J*6E6(Y7F z9i{bET!#=X^M4oQtvjV!H#i+2Pr6qTtL;hdQS+Ey&Zpuz`=IEcV5FG^ka=F+8k1}o zTl0GPxnHB^DN1+^$^ZJ-*)fm;(T9}(4W*pMt)4pB*Gt>VG(Pr}&(kyba(LyO#6|ny z<|2iEH%0&0$qE)9e@W_xTd~U{Ok=7HRpl_JD;djo59t_ksT3gn9IH|e=_10m`&rA5 zQEV_jOmu}OY3~<@``1F9GqU^&+!(SjG;?pPS@|aDjq-hg6_M~ha0wYbfqqzyl(_{; zydjC-X}G#HG#hu#)hOqN4qflcr<)9#MJm*|Dx(Izgi~&}&fLBQjeCTquJ|UfD7c^} z8)>XI1*v0RsrBj#rvUTocs0CKVH=VuWH1bsKK^u(<7a#<>)?Vem2A;uGq5aZ#G*1% z!};M+q!zT6GFP{Q;5hcQ)yeS?_;F<{dSse=&fL7rZ!HHUyO2D=mb!MwYN_!G84Dc| zXqh{zpZu1gWl|P*G+4gJD-Joy^1&fDkLtANYKH(i1a`>cNCtlomhcr}%@1x>yD|RP z4Jy_0g77c|N;4d4An{KnO&p;f?m{LqICP-{Tn|zrgkpP9@}A^7DIFvL97;sSII88S zkVU~k;cHee!HGXP&q=$c(SG~Sq>-8&VAc%V6D;oriUp`2rNeY5KjUWf%Ash7#jO&E zy#{M^9V1WnI4H6Y zfHmP_d(RC~sfCrwp)ydHg09TFAHRwfM$e)Plc`fXGgFX57nfqDH!2)LxjqxX$1 z4BvLE^?~qcog2F0_w720@;zvLHj|jg755W&+LEOh>gXJGhlgg7uYtLOG!1d{|2Q_T zo`>%D+Z3xsH?qcB$6_OuB11Z*9_uEudp^A-C z>V!r1giEJ46%ox8`{8lBKt;zlbyMep00@Gg*nq9;_B*s8J5Y&#pamsv)Eici_m5JAT#b=vq_$@K z;@T@kZF+uu7pq?{vF?z!o@s{?>0@zOgZ&3&8sxO;+;bp5tQz4Tq4>v?AIyU4vPZ4k zR^nrXN9ooH<`A|F;D%*tuD>0l$f7aV*-kIeujFevAMr|Z>gzv5txfn?X5REYM}eTT zSBuG($a!$FGKT<$jCE%1_ZiSlbXUBk%9~4K^9lRm1Zs0p@=eR);v!Bo%p>B+S?D{9 z3E^MWb^cN%pgkCA%@}!dh$W_Q2+PsO@KaER-hetjRokr_*_n>Mtm(_0PoA!`Px6=LMrQ;5V#u$?9SlACzO7D)#9>us0SDU zTlLCJn?9xNe5_o($Cg6O3siS0pp|TMoRw_}`tTF<0@q~khou5=NyPdK*zS#Y*`F~a zaSgb#bg}q{iq}l|k0GnYAQd|%Xt$q&O?1TZ6Q*h>U-*KyN0j3S7%X0<$!c+*>|f2> zVU>9#Zu-v@FPClN8qTs2HtDLX@-c91c6w$;0>*agM#m2e;-~qLdPqyw22LCCGXCKe zHZ8$5X7^+C%PFJGwuO}0=R$uiDY2u_B_OC8`P3PZ;7pfhCI~_3X=U44w`Adlf1fK$ z{A?4uz>H0}LzpfmFLlmu4g*VA-fqpe8eTH#`5dS@j>3i~dkxm57y}#@tAnE^qU^;K)l hlNK!hwM4?Ukb`MDKz-RPwDz&HLF?p^bAnjx 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

X7b);i7KsAEsw$jS`P6PVDDVT)hPhT`F>_(> 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

}Yb){E8EElU3fGbymu}Uo#tBp8{RcWa z=lVB_5MB?%yvsb}Mw(M@`ahmrg^=-{$LMg1`6`^FT&}@%KO%(MFy<4lvvE*<#vE02 zcN^D3WrIOojzk9UITa32%i=Sqf#`;IIo(McA5$TJ-XF!eHgUnWlO6|_ZRZ8iV)0J% z$zEr~3bDY16M*@t7F<#yM}O;=>7&Sj1lP{#v+QVgpzQD&jU|hoFo1)&Ci5@u7viO# z!T?6ffnVU2T&RkH`&OsP3&|oAYOu5O;54=-H2i}IH}c=uXPBWIGhJW0CpnH#BhBXV zGy*|To|49-vY4~IGY-oj61e$Y?e=?U)i9r-tev=4Rvm7EW@<^Q-c9Ej;iR=0uFeb8 zlo~ckE(>|fe*XI3PTXoVOiKnpp??m4aOn!Ga?R3IKmy;q_X@``$_ejgtLGkhZ+rfUpB+q9sK2b&5F24d?!z>Gi$*& z>(>89ShYvN-1@d(1A3*8HSZR$^sDE4rXOX3Z+qr}wYJrv>VSpfuAJ4+36Y12F&k8x zZEEr`hX5n@Ufa!GUoxKo4y18`z>XeU1C` z!z-r1!swH4xo9|@jT4B%3!hgj`Of(`k;X&Ta>!*{)_%-A4#`C!8P@-1yxkXrMf%pk72q!5|xJH<5IEC|z#`#6L z0PD3z2~H{c&FZne!PovAY=h-u(4Gh}o-4{9KD|nUx$M1;YdDZ?h8`{l1ny5&-qh!( zPZ)v_?n9A-=neXZm7(`v4*f}_{O{|R@rO1Bo5}(wKlMVbyKd|g5|15p$bD>UMRIRq z>R0VaG8^XlQEM8aG@CqyrTKBh;a3&9-mlW=q8HH^fho^PrBB#c1M9P4*FO!73Vl_5 z4j0JSJSW}GM>znxqLMbo7>@yZ)R!h<$Cjfdj?|QsQ#C-yBZ-aQo5~@ z&}pMGy#fRv{WRwLZazByCfTcqN1ifAiNDYT>bxmL#5=%Y!QxAO-{HxC z_FdJO!#P4oBz5%H7v8RTx;=_|h;bmu%Io{zY5O$T)h5V(0qYTGG+pPu3;=W2Yi7Jc4~(zdDe@_{*K?EOybA`CBpu& zJ6wZ=C58(mrn@bXzoqtZ0;Be<)7@;7H@)NOMw#=oLmh&X_mhZXI3kPP^s|p5pW;NT z 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

5rq|#y3h(&rGr`6%`oBo}$K0MUE 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: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