From c0568ba3c678fba14d67817bb28418b817acc851 Mon Sep 17 00:00:00 2001 From: thiolliere Date: Wed, 23 Jan 2019 18:26:44 +0100 Subject: [PATCH] update primitive-types and solve break changes (#1535) --- substrate/Cargo.lock | 13 ++-- .../core/client/db/src/cache/list_cache.rs | 35 ++++++----- substrate/core/client/db/src/light.rs | 4 +- substrate/core/client/src/cht.rs | 12 ++-- substrate/core/client/src/notifications.rs | 14 ++--- .../finality-grandpa/src/finality_proof.rs | 8 +-- substrate/core/finality-grandpa/src/tests.rs | 16 ++--- substrate/core/primitives/src/hash.rs | 24 ++++---- substrate/core/rpc/src/chain/tests.rs | 10 +-- .../core/sr-primitives/src/generic/digest.rs | 2 +- .../substrate_test_runtime.compact.wasm | Bin 60251 -> 60251 bytes .../core/transaction-pool/graph/src/pool.rs | 58 +++++++++--------- .../release/node_runtime.compact.wasm | Bin 837718 -> 837659 bytes substrate/srml/contract/src/exec.rs | 2 +- 14 files changed, 99 insertions(+), 99 deletions(-) diff --git a/substrate/Cargo.lock b/substrate/Cargo.lock index 6dc6440056..99ebbf44cc 100644 --- a/substrate/Cargo.lock +++ b/substrate/Cargo.lock @@ -2341,14 +2341,13 @@ dependencies = [ [[package]] name = "primitive-types" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "fixed-hash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "impl-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "uint 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "uint 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3864,7 +3863,7 @@ dependencies = [ "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_assertions 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "primitive-types 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4578,7 +4577,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "uint" -version = "0.5.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -5137,7 +5136,7 @@ dependencies = [ "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" "checksum pretty_assertions 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "28ea5118e2f41bfbc974b28d88c07621befd1fa5d6ec23549be96302a1a59dd2" "checksum pretty_assertions 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3a029430f0d744bc3d15dd474d591bed2402b645d024583082b9f63bb936dac6" -"checksum primitive-types 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f47c18b4601125931d69fcf7b000c2c16a304e4f84d58218d6470b4502e00b58" +"checksum primitive-types 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f98b65b49b3979da4f94651c07a60a7879374d7d49de0036ecd116ee25c975b5" "checksum proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2c725b36c99df7af7bf9324e9c999b9e37d92c8f8caf106d82e1d7953218d2d8" "checksum proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2b753ad9ed99dd8efeaa7d2fb8453c8f6bc3e54b97966d35f1bc77ca6865254a" "checksum proc-macro2 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "77997c53ae6edd6d187fec07ec41b207063b5ee6f33680e9fa86d405cdd313d4" @@ -5267,7 +5266,7 @@ dependencies = [ "checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" "checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" "checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" -"checksum uint 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "082df6964410f6aa929a61ddfafc997e4f32c62c22490e439ac351cec827f436" +"checksum uint 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e7780bb27fd8a22295e0d9d53ae3be253f715a0dccb1808527f478f1c2603708" "checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" "checksum unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d3218ea14b4edcaccfa0df0a64a3792a2c32cc706f1b336e48867f9d3147f90" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" diff --git a/substrate/core/client/db/src/cache/list_cache.rs b/substrate/core/client/db/src/cache/list_cache.rs index e40dcda313..f8e52e14c6 100644 --- a/substrate/core/client/db/src/cache/list_cache.rs +++ b/substrate/core/client/db/src/cache/list_cache.rs @@ -585,6 +585,7 @@ fn read_forks>( #[cfg(test)] pub mod tests { + use test_client::runtime::H256; use runtime_primitives::testing::{Header, Block as RawBlock, ExtrinsicWrapper}; use runtime_primitives::traits::Header as HeaderT; use crate::cache::list_storage::tests::{DummyStorage, FaultyStorage, DummyTransaction}; @@ -593,7 +594,7 @@ pub mod tests { type Block = RawBlock>; pub fn test_id(number: u64) -> ComplexBlockId { - ComplexBlockId::new(From::from(number), number) + ComplexBlockId::new(H256::from_low_u64_be(number), number) } fn correct_id(number: u64) -> ComplexBlockId { @@ -621,7 +622,7 @@ pub mod tests { Header { parent_hash: fork_header(fork_nonce, fork_from, number - 1).hash(), number, - state_root: (1 + fork_nonce).into(), + state_root: H256::from_low_u64_be(1 + fork_nonce), extrinsics_root: Default::default(), digest: Default::default(), } @@ -640,7 +641,7 @@ pub mod tests { assert_eq!(ListCache::new( DummyStorage::new() .with_meta(Some(test_id(100)), Vec::new()) - .with_id(50, 50.into()) + .with_id(50, H256::from_low_u64_be(50)) .with_entry(test_id(100), StorageEntry { prev_valid_from: Some(test_id(30)), value: Some(100) }) .with_entry(test_id(30), StorageEntry { prev_valid_from: None, value: None }), 1024, test_id(100) @@ -650,7 +651,7 @@ pub mod tests { assert_eq!(ListCache::new( DummyStorage::new() .with_meta(Some(test_id(100)), Vec::new()) - .with_id(50, 50.into()) + .with_id(50, H256::from_low_u64_be(50)) .with_entry(test_id(100), StorageEntry { prev_valid_from: Some(test_id(30)), value: Some(100) }) .with_entry(test_id(30), StorageEntry { prev_valid_from: None, value: Some(30) }), 1024, test_id(100) @@ -660,7 +661,7 @@ pub mod tests { assert_eq!(ListCache::new( DummyStorage::new() .with_meta(Some(test_id(100)), Vec::new()) - .with_id(100, 100.into()) + .with_id(100, H256::from_low_u64_be(100)) .with_entry(test_id(100), StorageEntry { prev_valid_from: Some(test_id(30)), value: Some(100) }) .with_entry(test_id(30), StorageEntry { prev_valid_from: None, value: Some(30) }), 1024, test_id(100) @@ -671,18 +672,18 @@ pub mod tests { assert_eq!(ListCache::new( DummyStorage::new() .with_meta(Some(test_id(100)), Vec::new()) - .with_id(50, 50.into()) + .with_id(50, H256::from_low_u64_be(50)) .with_entry(test_id(100), StorageEntry { prev_valid_from: Some(test_id(30)), value: Some(100) }) .with_entry(test_id(30), StorageEntry { prev_valid_from: None, value: Some(30) }), 1024, test_id(100) - ).value_at_block(&ComplexBlockId::new(2.into(), 100)).unwrap(), None); + ).value_at_block(&ComplexBlockId::new(H256::from_low_u64_be(2), 100)).unwrap(), None); // when block is later than last finalized block AND there are no forks AND finalized value is None // ---> [100] --- 200 assert_eq!(ListCache::<_, u64, _>::new( DummyStorage::new() .with_meta(Some(test_id(100)), Vec::new()) - .with_id(50, 50.into()) + .with_id(50, H256::from_low_u64_be(50)) .with_entry(test_id(100), StorageEntry { prev_valid_from: Some(test_id(30)), value: None }), 1024, test_id(100) ).value_at_block(&test_id(200)).unwrap(), None); @@ -691,7 +692,7 @@ pub mod tests { assert_eq!(ListCache::new( DummyStorage::new() .with_meta(Some(test_id(100)), Vec::new()) - .with_id(50, 50.into()) + .with_id(50, H256::from_low_u64_be(50)) .with_entry(test_id(100), StorageEntry { prev_valid_from: Some(test_id(30)), value: Some(100) }), 1024, test_id(100) ).value_at_block(&test_id(200)).unwrap(), Some(100)); @@ -1213,14 +1214,14 @@ pub mod tests { #[test] fn fork_destroy_works() { // when we reached finalized entry without iterations - let storage = DummyStorage::new().with_id(100, 100.into()); + let storage = DummyStorage::new().with_id(100, H256::from_low_u64_be(100)); let mut tx = DummyTransaction::new(); Fork::<_, u64> { best_block: None, head: Entry { valid_from: test_id(100), value: None } } .destroy(&storage, &mut tx, Some(200)).unwrap(); assert!(tx.removed_entries().is_empty()); // when we reach finalized entry with iterations let storage = DummyStorage::new() - .with_id(10, 10.into()) + .with_id(10, H256::from_low_u64_be(10)) .with_entry(test_id(100), StorageEntry { prev_valid_from: Some(test_id(50)), value: Some(100) }) .with_entry(test_id(50), StorageEntry { prev_valid_from: Some(test_id(20)), value: Some(50) }) .with_entry(test_id(20), StorageEntry { prev_valid_from: Some(test_id(10)), value: Some(20) }) @@ -1234,7 +1235,7 @@ pub mod tests { vec![test_id(100).hash, test_id(50).hash, test_id(20).hash].into_iter().collect()); // when we reach beginning of fork before finalized block let storage = DummyStorage::new() - .with_id(10, 10.into()) + .with_id(10, H256::from_low_u64_be(10)) .with_entry(test_id(100), StorageEntry { prev_valid_from: Some(test_id(50)), value: Some(100) }) .with_entry(test_id(50), StorageEntry { prev_valid_from: None, value: Some(50) }); let mut tx = DummyTransaction::new(); @@ -1303,10 +1304,10 @@ pub mod tests { assert_eq!(chain::is_finalized_block::<_, u64, _>(&DummyStorage::new(), &test_id(1), 100).unwrap(), false); // when there's different hash for this block number in the database assert_eq!(chain::is_finalized_block::<_, u64, _>(&DummyStorage::new() - .with_id(1, From::from(2)), &test_id(1), 100).unwrap(), false); + .with_id(1, H256::from_low_u64_be(2)), &test_id(1), 100).unwrap(), false); // when there's the same hash for this block number in the database assert_eq!(chain::is_finalized_block::<_, u64, _>(&DummyStorage::new() - .with_id(1, From::from(1)), &test_id(1), 100).unwrap(), true); + .with_id(1, H256::from_low_u64_be(1)), &test_id(1), 100).unwrap(), true); } #[test] @@ -1356,9 +1357,9 @@ pub mod tests { #[test] fn ancient_entries_are_pruned() { let cache = ListCache::new(DummyStorage::new() - .with_id(10, 10.into()) - .with_id(20, 20.into()) - .with_id(30, 30.into()) + .with_id(10, H256::from_low_u64_be(10)) + .with_id(20, H256::from_low_u64_be(20)) + .with_id(30, H256::from_low_u64_be(30)) .with_entry(test_id(10), StorageEntry { prev_valid_from: None, value: Some(10) }) .with_entry(test_id(20), StorageEntry { prev_valid_from: Some(test_id(10)), value: Some(20) }) .with_entry(test_id(30), StorageEntry { prev_valid_from: Some(test_id(20)), value: Some(30) }), diff --git a/substrate/core/client/db/src/light.rs b/substrate/core/client/db/src/light.rs index 3e197e5ae7..13765bfe5d 100644 --- a/substrate/core/client/db/src/light.rs +++ b/substrate/core/client/db/src/light.rs @@ -554,7 +554,7 @@ pub(crate) mod tests { #[test] fn does_not_return_unknown_header() { let db = LightStorage::::new_test(); - assert!(db.header(BlockId::Hash(1.into())).unwrap().is_none()); + assert!(db.header(BlockId::Hash(Hash::from_low_u64_be(1))).unwrap().is_none()); assert!(db.header(BlockId::Number(0)).unwrap().is_none()); } @@ -579,7 +579,7 @@ pub(crate) mod tests { let genesis_hash = insert_block(&db, None, || default_header(&Default::default(), 0)); assert_eq!(db.status(BlockId::Hash(genesis_hash)).unwrap(), BlockStatus::InChain); assert_eq!(db.status(BlockId::Number(0)).unwrap(), BlockStatus::InChain); - assert_eq!(db.status(BlockId::Hash(1.into())).unwrap(), BlockStatus::Unknown); + assert_eq!(db.status(BlockId::Hash(Hash::from_low_u64_be(1))).unwrap(), BlockStatus::Unknown); assert_eq!(db.status(BlockId::Number(1)).unwrap(), BlockStatus::Unknown); } diff --git a/substrate/core/client/src/cht.rs b/substrate/core/client/src/cht.rs index 5797f3e279..59377b5325 100644 --- a/substrate/core/client/src/cht.rs +++ b/substrate/core/client/src/cht.rs @@ -339,20 +339,20 @@ mod tests { #[test] fn build_pairs_fails_when_no_enough_blocks() { assert!(build_pairs::(SIZE, 0, - ::std::iter::repeat_with(|| Ok(Some(1.into()))).take(SIZE as usize / 2)).is_err()); + ::std::iter::repeat_with(|| Ok(Some(H256::from_low_u64_be(1)))).take(SIZE as usize / 2)).is_err()); } #[test] fn build_pairs_fails_when_missing_block() { - assert!(build_pairs::(SIZE, 0, ::std::iter::repeat_with(|| Ok(Some(1.into()))).take(SIZE as usize / 2) + assert!(build_pairs::(SIZE, 0, ::std::iter::repeat_with(|| Ok(Some(H256::from_low_u64_be(1)))).take(SIZE as usize / 2) .chain(::std::iter::once(Ok(None))) - .chain(::std::iter::repeat_with(|| Ok(Some(2.into()))).take(SIZE as usize / 2 - 1))).is_err()); + .chain(::std::iter::repeat_with(|| Ok(Some(H256::from_low_u64_be(2)))).take(SIZE as usize / 2 - 1))).is_err()); } #[test] fn compute_root_works() { assert!(compute_root::(SIZE, 42, - ::std::iter::repeat_with(|| Ok(Some(1.into()))).take(SIZE as usize)).is_ok()); + ::std::iter::repeat_with(|| Ok(Some(H256::from_low_u64_be(1)))).take(SIZE as usize)).is_ok()); } #[test] @@ -360,14 +360,14 @@ mod tests { fn build_proof_panics_when_querying_wrong_block() { assert!(build_proof::( SIZE, 0, vec![(SIZE * 1000) as u64], - ::std::iter::repeat_with(|| Ok(Some(1.into()))).take(SIZE as usize)).is_err()); + ::std::iter::repeat_with(|| Ok(Some(H256::from_low_u64_be(1)))).take(SIZE as usize)).is_err()); } #[test] fn build_proof_works() { assert!(build_proof::( SIZE, 0, vec![(SIZE / 2) as u64], - ::std::iter::repeat_with(|| Ok(Some(1.into()))).take(SIZE as usize)).is_ok()); + ::std::iter::repeat_with(|| Ok(Some(H256::from_low_u64_be(1)))).take(SIZE as usize)).is_ok()); } #[test] diff --git a/substrate/core/client/src/notifications.rs b/substrate/core/client/src/notifications.rs index 1856932ca9..dae0ad2599 100644 --- a/substrate/core/client/src/notifications.rs +++ b/substrate/core/client/src/notifications.rs @@ -213,10 +213,10 @@ mod tests { (vec![2], Some(vec![3])), (vec![3], None), ]; - notifications.trigger(&1.into(), changeset.into_iter()); + notifications.trigger(&Hash::from_low_u64_be(1), changeset.into_iter()); // then - assert_eq!(recv.next().unwrap(), Ok((1.into(), vec![ + assert_eq!(recv.next().unwrap(), Ok((Hash::from_low_u64_be(1), vec![ (StorageKey(vec![2]), Some(StorageData(vec![3]))), (StorageKey(vec![3]), None), ].into()))); @@ -234,13 +234,13 @@ mod tests { (vec![2], Some(vec![3])), (vec![1], None), ]; - notifications.trigger(&1.into(), changeset.into_iter()); + notifications.trigger(&Hash::from_low_u64_be(1), changeset.into_iter()); // then - assert_eq!(recv1.next().unwrap(), Ok((1.into(), vec![ + assert_eq!(recv1.next().unwrap(), Ok((Hash::from_low_u64_be(1), vec![ (StorageKey(vec![1]), None), ].into()))); - assert_eq!(recv2.next().unwrap(), Ok((1.into(), vec![ + assert_eq!(recv2.next().unwrap(), Ok((Hash::from_low_u64_be(1), vec![ (StorageKey(vec![2]), Some(StorageData(vec![3]))), ].into()))); } @@ -262,7 +262,7 @@ mod tests { (vec![2], Some(vec![3])), (vec![1], None), ]; - notifications.trigger(&1.into(), changeset.into_iter()); + notifications.trigger(&Hash::from_low_u64_be(1), changeset.into_iter()); // then assert_eq!(notifications.listeners.len(), 0); @@ -278,7 +278,7 @@ mod tests { // when let changeset = vec![]; - notifications.trigger(&1.into(), changeset.into_iter()); + notifications.trigger(&Hash::from_low_u64_be(1), changeset.into_iter()); recv }; diff --git a/substrate/core/finality-grandpa/src/finality_proof.rs b/substrate/core/finality-grandpa/src/finality_proof.rs index c927aa68a0..ddf656c79f 100644 --- a/substrate/core/finality-grandpa/src/finality_proof.rs +++ b/substrate/core/finality-grandpa/src/finality_proof.rs @@ -269,11 +269,11 @@ mod tests { 0 => Default::default(), _ => header(number - 1).hash(), }; - Header::new(number, 0.into(), 0.into(), parent_hash, Default::default()) + Header::new(number, H256::from_low_u64_be(0), H256::from_low_u64_be(0), parent_hash, Default::default()) } fn side_header(number: u64) -> Header { - Header::new(number, 0.into(), 1.into(), header(number - 1).hash(), Default::default()) + Header::new(number, H256::from_low_u64_be(0), H256::from_low_u64_be(1), header(number - 1).hash(), Default::default()) } fn test_blockchain() -> InMemoryBlockchain { @@ -304,7 +304,7 @@ mod tests { blockchain.insert(header(5).hash(), header(5), Some(vec![5]), None, NewBlockState::Final).unwrap(); // when asking for finality of side-block 42, None is returned - let proof_of_side_4_fails = prove_finality(&blockchain, |_, _, _| Ok(vec![vec![42]]), 42.into()).is_err(); + let proof_of_side_4_fails = prove_finality(&blockchain, |_, _, _| Ok(vec![vec![42]]), H256::from_low_u64_be(42)).is_err(); assert_eq!(proof_of_side_4_fails, true); } @@ -314,7 +314,7 @@ mod tests { blockchain.insert(header(4).hash(), header(4), None, None, NewBlockState::Final).unwrap(); // when asking for finality of block 4, search for justification failing - let proof_of_4_fails = prove_finality(&blockchain, |_, _, _| Ok(vec![vec![42]]), 42.into()).is_err(); + let proof_of_4_fails = prove_finality(&blockchain, |_, _, _| Ok(vec![vec![42]]), H256::from_low_u64_be(42)).is_err(); assert_eq!(proof_of_4_fails, true); } diff --git a/substrate/core/finality-grandpa/src/tests.rs b/substrate/core/finality-grandpa/src/tests.rs index 96059eb46b..d025796f08 100644 --- a/substrate/core/finality-grandpa/src/tests.rs +++ b/substrate/core/finality-grandpa/src/tests.rs @@ -667,18 +667,18 @@ fn consensus_changes_works() { let mut changes = ConsensusChanges::::empty(); // pending changes are not finalized - changes.note_change((10, 1.into())); - assert_eq!(changes.finalize((5, 5.into()), |_| Ok(None)).unwrap(), (false, false)); + changes.note_change((10, H256::from_low_u64_be(1))); + assert_eq!(changes.finalize((5, H256::from_low_u64_be(5)), |_| Ok(None)).unwrap(), (false, false)); // no change is selected from competing pending changes - changes.note_change((1, 1.into())); - changes.note_change((1, 101.into())); - assert_eq!(changes.finalize((10, 10.into()), |_| Ok(Some(1001.into()))).unwrap(), (true, false)); + changes.note_change((1, H256::from_low_u64_be(1))); + changes.note_change((1, H256::from_low_u64_be(101))); + assert_eq!(changes.finalize((10, H256::from_low_u64_be(10)), |_| Ok(Some(H256::from_low_u64_be(1001)))).unwrap(), (true, false)); // change is selected from competing pending changes - changes.note_change((1, 1.into())); - changes.note_change((1, 101.into())); - assert_eq!(changes.finalize((10, 10.into()), |_| Ok(Some(1.into()))).unwrap(), (true, true)); + changes.note_change((1, H256::from_low_u64_be(1))); + changes.note_change((1, H256::from_low_u64_be(101))); + assert_eq!(changes.finalize((10, H256::from_low_u64_be(10)), |_| Ok(Some(H256::from_low_u64_be(1)))).unwrap(), (true, true)); } #[test] diff --git a/substrate/core/primitives/src/hash.rs b/substrate/core/primitives/src/hash.rs index 98a906861f..e4ebbe4b1e 100644 --- a/substrate/core/primitives/src/hash.rs +++ b/substrate/core/primitives/src/hash.rs @@ -37,12 +37,12 @@ mod tests { fn test_h160() { let tests = vec![ (Default::default(), "0x0000000000000000000000000000000000000000"), - (H160::from(2), "0x0000000000000000000000000000000000000002"), - (H160::from(15), "0x000000000000000000000000000000000000000f"), - (H160::from(16), "0x0000000000000000000000000000000000000010"), - (H160::from(1_000), "0x00000000000000000000000000000000000003e8"), - (H160::from(100_000), "0x00000000000000000000000000000000000186a0"), - (H160::from(u64::max_value()), "0x000000000000000000000000ffffffffffffffff"), + (H160::from_low_u64_be(2), "0x0000000000000000000000000000000000000002"), + (H160::from_low_u64_be(15), "0x000000000000000000000000000000000000000f"), + (H160::from_low_u64_be(16), "0x0000000000000000000000000000000000000010"), + (H160::from_low_u64_be(1_000), "0x00000000000000000000000000000000000003e8"), + (H160::from_low_u64_be(100_000), "0x00000000000000000000000000000000000186a0"), + (H160::from_low_u64_be(u64::max_value()), "0x000000000000000000000000ffffffffffffffff"), ]; for (number, expected) in tests { @@ -55,12 +55,12 @@ mod tests { fn test_h256() { let tests = vec![ (Default::default(), "0x0000000000000000000000000000000000000000000000000000000000000000"), - (H256::from(2), "0x0000000000000000000000000000000000000000000000000000000000000002"), - (H256::from(15), "0x000000000000000000000000000000000000000000000000000000000000000f"), - (H256::from(16), "0x0000000000000000000000000000000000000000000000000000000000000010"), - (H256::from(1_000), "0x00000000000000000000000000000000000000000000000000000000000003e8"), - (H256::from(100_000), "0x00000000000000000000000000000000000000000000000000000000000186a0"), - (H256::from(u64::max_value()), "0x000000000000000000000000000000000000000000000000ffffffffffffffff"), + (H256::from_low_u64_be(2), "0x0000000000000000000000000000000000000000000000000000000000000002"), + (H256::from_low_u64_be(15), "0x000000000000000000000000000000000000000000000000000000000000000f"), + (H256::from_low_u64_be(16), "0x0000000000000000000000000000000000000000000000000000000000000010"), + (H256::from_low_u64_be(1_000), "0x00000000000000000000000000000000000000000000000000000000000003e8"), + (H256::from_low_u64_be(100_000), "0x00000000000000000000000000000000000000000000000000000000000186a0"), + (H256::from_low_u64_be(u64::max_value()), "0x000000000000000000000000000000000000000000000000ffffffffffffffff"), ]; for (number, expected) in tests { diff --git a/substrate/core/rpc/src/chain/tests.rs b/substrate/core/rpc/src/chain/tests.rs index 5dcd2d0e21..f6c8aa4b79 100644 --- a/substrate/core/rpc/src/chain/tests.rs +++ b/substrate/core/rpc/src/chain/tests.rs @@ -17,7 +17,7 @@ use super::*; use jsonrpc_macros::pubsub; use test_client::{self, TestClient}; -use test_client::runtime::{Block, Header}; +use test_client::runtime::{H256, Block, Header}; use consensus::BlockOrigin; #[test] @@ -33,7 +33,7 @@ fn should_return_header() { assert_matches!( client.header(Some(client.client.genesis_hash()).into()), Ok(Some(ref x)) if x == &Header { - parent_hash: 0.into(), + parent_hash: H256::from_low_u64_be(0), number: 0, state_root: x.state_root.clone(), extrinsics_root: "03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314".parse().unwrap(), @@ -44,7 +44,7 @@ fn should_return_header() { assert_matches!( client.header(None.into()), Ok(Some(ref x)) if x == &Header { - parent_hash: 0.into(), + parent_hash: H256::from_low_u64_be(0), number: 0, state_root: x.state_root.clone(), extrinsics_root: "03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314".parse().unwrap(), @@ -53,7 +53,7 @@ fn should_return_header() { ); assert_matches!( - client.header(Some(5.into()).into()), + client.header(Some(H256::from_low_u64_be(5)).into()), Ok(None) ); } @@ -107,7 +107,7 @@ fn should_return_a_block() { ); assert_matches!( - api.block(Some(5.into()).into()), + api.block(Some(H256::from_low_u64_be(5)).into()), Ok(None) ); } diff --git a/substrate/core/sr-primitives/src/generic/digest.rs b/substrate/core/sr-primitives/src/generic/digest.rs index 5d6aba3ab6..1b54f42134 100644 --- a/substrate/core/sr-primitives/src/generic/digest.rs +++ b/substrate/core/sr-primitives/src/generic/digest.rs @@ -227,7 +227,7 @@ mod tests { logs: vec![ DigestItem::AuthoritiesChange(vec![1]), DigestItem::ChangesTrieRoot(4), - DigestItem::Seal(1, 15.into()), + DigestItem::Seal(1, Signature::from_low_u64_be(15)), DigestItem::Other(vec![1, 2, 3]), ], }; diff --git a/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 204a87d33d1b29908e7f10e9f3e242104cadc20a..00c1df5af4a9465be823536e712a4f27e6dcf594 100644 GIT binary patch delta 6841 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 delta 6834 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

ZL0yhTmZTzu?JBoP$@GZbHz<&pH z0e%fw3TQQF$CZFKj$6k0&?&(}5U>*P4vWCm0NMe^0bYkckN@=;*Y=oa#IpHwIET-G zm-pY4oBsy;tI*FAxCMPH{xd-^BP2V&jN?AV!2FX1j{Bc~FmC~yY=0{*!b_BU2+#re z1fU6USYei-Nq`j?Ujmg(q8%8EfUg6(0Socx`r^;TR)qhHMFQsmd>fF7_z8OY&2dak zr;iuLV@uoS#}?8{r)Op+zV#`o$W08rdC8)5GSRkl=*_Vu^V@ExlipcF-+ZU_|5*3Z zTi=~VV}IyRpMI|<<9Y8dgi)Qb{2@f>gflfRn=^S^+nk%1%wO0xXJLCQZ9P*#Th5Ir zk&*#_A{o+?VKosC$CYBLoa^tF!@+bjF|`ly!fIWwk23C8uLECnS= zSEZOgAyEG8z*0#K#Z#$xA{0saRYg@xnn%#s*>d`DcepN+N+lD46t*W)p+rb`JLb$; z(!R89POPP6QKGcS=r3B-T1NMsEkhlB?CdBhAcsRrEH0-adLrOY1wF;NGfR@jsfzqq z&yMNgb7FZUAVvH!HS7=j{i>`>y`&Mfb#!l6KOvq>g<@ej7!0JOa7>bE@2(m_iNphO zNlgWHIUY%=A$m<$wGdQ8;dmgRC*rYiBBliBU0qdzs;g=$F3CX^9LTavf7j&`lCf9_ zTn9smupCc?1GKBF)}=?nfuuhrsmZvEYiZf}fr1=XrBE;#ON10T6;u^E>HK6*Fp>-e zL!dy9#UhDh&^vZSyCPGqJK#~0K{=&|;&C~qBoe8BuW`hzc9llEub_Rp9fBk$aS@rQ$q#pLiB`KmrbOk+`ZvG(ZiYURPo(e+mp=3-C(2qVi><%c&FgQ#l^sp{P zRCTaoXuJA@0{ZF&hf7Mt10h9CsewQ$poHm17t%r^tOwLsDiM(*Nx!b^wE4rRJEf|M zKNt)7bt#YvCn7`Z=(Sy*(qY5qrIK+FCI|cxzZwdLQknNZJV*pJtVaR~zh4Q+{-j@# z=#GyMl_XN&JQPVLWI3R#axz4__ zB$IUCr^5v`7Egqex(ee7#ey-Ne*39Uh^Xo2-o*cVZfAXSzXJ(QwPT^u0DY_sl%qV!-Oq^h+0;!WjhG9W2INK6b! N{z!x5Z;--u{|gsI-;@9V diff --git a/substrate/core/transaction-pool/graph/src/pool.rs b/substrate/core/transaction-pool/graph/src/pool.rs index 923a4f2295..f69aa1d24d 100644 --- a/substrate/core/transaction-pool/graph/src/pool.rs +++ b/substrate/core/transaction-pool/graph/src/pool.rs @@ -314,7 +314,7 @@ fn fire_events( mod tests { use super::*; use futures::Stream; - use test_runtime::{Block, Extrinsic, Transfer}; + use test_runtime::{Block, Extrinsic, Transfer, H256}; #[derive(Debug, Default)] struct TestApi; @@ -352,7 +352,7 @@ mod tests { /// Returns a block hash given the block id. fn block_id_to_hash(&self, at: &BlockId) -> Result>, Self::Error> { Ok(match at { - BlockId::Number(num) => Some((*num).into()), + BlockId::Number(num) => Some(H256::from_low_u64_be(*num)), BlockId::Hash(_) => None, }) } @@ -379,8 +379,8 @@ mod tests { // when let hash = pool.submit_one(&BlockId::Number(0), uxt(Transfer { - from: 1.into(), - to: 2.into(), + from: H256::from_low_u64_be(1), + to: H256::from_low_u64_be(2), amount: 5, nonce: 0, })).unwrap(); @@ -394,8 +394,8 @@ mod tests { // given let pool = pool(); let uxt = uxt(Transfer { - from: 1.into(), - to: 2.into(), + from: H256::from_low_u64_be(1), + to: H256::from_low_u64_be(2), amount: 5, nonce: 0, }); @@ -419,21 +419,21 @@ mod tests { // when let _hash = pool.submit_one(&BlockId::Number(0), uxt(Transfer { - from: 1.into(), - to: 2.into(), + from: H256::from_low_u64_be(1), + to: H256::from_low_u64_be(2), amount: 5, nonce: 0, })).unwrap(); let _hash = pool.submit_one(&BlockId::Number(0), uxt(Transfer { - from: 1.into(), - to: 2.into(), + from: H256::from_low_u64_be(1), + to: H256::from_low_u64_be(2), amount: 5, nonce: 1, })).unwrap(); // future doesn't count let _hash = pool.submit_one(&BlockId::Number(0), uxt(Transfer { - from: 1.into(), - to: 2.into(), + from: H256::from_low_u64_be(1), + to: H256::from_low_u64_be(2), amount: 5, nonce: 3, })).unwrap(); @@ -455,20 +455,20 @@ mod tests { // given let pool = pool(); let hash1 = pool.submit_one(&BlockId::Number(0), uxt(Transfer { - from: 1.into(), - to: 2.into(), + from: H256::from_low_u64_be(1), + to: H256::from_low_u64_be(2), amount: 5, nonce: 0, })).unwrap(); let hash2 = pool.submit_one(&BlockId::Number(0), uxt(Transfer { - from: 1.into(), - to: 2.into(), + from: H256::from_low_u64_be(1), + to: H256::from_low_u64_be(2), amount: 5, nonce: 1, })).unwrap(); let hash3 = pool.submit_one(&BlockId::Number(0), uxt(Transfer { - from: 1.into(), - to: 2.into(), + from: H256::from_low_u64_be(1), + to: H256::from_low_u64_be(2), amount: 5, nonce: 3, })).unwrap(); @@ -494,8 +494,8 @@ mod tests { // given let pool = pool(); let watcher = pool.submit_and_watch(&BlockId::Number(0), uxt(Transfer { - from: 1.into(), - to: 2.into(), + from: H256::from_low_u64_be(1), + to: H256::from_low_u64_be(2), amount: 5, nonce: 0, })).unwrap(); @@ -510,7 +510,7 @@ mod tests { // then let mut stream = watcher.into_stream().wait(); assert_eq!(stream.next(), Some(Ok(::watcher::Status::Ready))); - assert_eq!(stream.next(), Some(Ok(::watcher::Status::Finalised(2.into())))); + assert_eq!(stream.next(), Some(Ok(::watcher::Status::Finalised(H256::from_low_u64_be(2))))); assert_eq!(stream.next(), None); } @@ -519,8 +519,8 @@ mod tests { // given let pool = pool(); let watcher = pool.submit_and_watch(&BlockId::Number(0), uxt(Transfer { - from: 1.into(), - to: 2.into(), + from: H256::from_low_u64_be(1), + to: H256::from_low_u64_be(2), amount: 5, nonce: 1, })).unwrap(); @@ -529,8 +529,8 @@ mod tests { // when pool.submit_one(&BlockId::Number(0), uxt(Transfer { - from: 1.into(), - to: 2.into(), + from: H256::from_low_u64_be(1), + to: H256::from_low_u64_be(2), amount: 5, nonce: 0, })).unwrap(); @@ -547,8 +547,8 @@ mod tests { // given let pool = pool(); let uxt = uxt(Transfer { - from: 1.into(), - to: 2.into(), + from: H256::from_low_u64_be(1), + to: H256::from_low_u64_be(2), amount: 5, nonce: 0, }); @@ -571,8 +571,8 @@ mod tests { // given let pool = pool(); let uxt = uxt(Transfer { - from: 1.into(), - to: 2.into(), + from: H256::from_low_u64_be(1), + to: H256::from_low_u64_be(2), amount: 5, nonce: 0, }); diff --git a/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index f7ce6caae391d283d5f7d6287aa6be69ff69b7c9..00530858caacd7e0c591d0ea53c5e1c5b76fe67f 100644 GIT binary patch delta 67695 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 delta 66221 zcmeFa2Y6LQ_cwZG&Tgk9IUx{23Y>%hsq`iwvJnI+f(Y0Z>_nPaUt4Gj0!k#v!q-Aj z5Jak!je-)ug3^K_qJV$`2I&fj)cc#+dxr#*{9oVi`|f@2bFT=qr>|MFX3d(l*35Y$ zugSK&CJP66l}H}a@&|d}ZpMRL)l^kg6jc-dUH-R5q>2c#G?gieUs2*UO;Oc^gaj?W zol@J6ELlTS^9L)Pm?wX!lI<(rz19=R^_a!^hm^iq7g*@pA;a#!yZ_^lJv3z4fX4>h z|ET98t0L3xf9n2wAAjuryYCq|I1C$AIxH7_-S^EZDq^YckDdBz<+0Z z@_*B62eU5mll&t8hOOi?@@wcxIp6W^d@KK+ALQrRIkt^WVej$#|Me*^2|JK6A1^V>m8OL}a;0b%eEX+g4c|gZ^=qL|Fc+6iftoE2GA>HE% z_&w(F&5Iu{{93PaxL}Q^IqwW1XbyEf_C!J0tvU-b8 zZl11`lZgh$EpGJP!`|}pUftAhapVuxDy+9^S9W=Mi!bhNUmhU&qP-7)d9u7b8_0Y1 zr~1nQL}upqJoDs#m3RDf#q}!7tGK`M{{Lo-Ba0=l?N+la)`JD67OnMQ*Ne*u{Z13JS-qG)xF=waMXHHEp_@E`P=@tYHmk!O znrvuqm04n|oYIi}SWdEaxFL&VRo0CVTWbgfd2=2_kVnDBte#%5WvwT)oYDM7tXs_A z3LP(^h{mig8%~9dSv!_zu_kQvGDY=-lB`h&S+WwFH*yX3_k`v=F07cL9Q*_5v+3g_ z>=Bk>WgTVx6l>D&%rxTc%{|VBxT=5{q7OjIH}}WT#j{Lj+etgeh~-;vpJR;~%cCvl z**H6hwT4|_clhE?E{ELEB-99KDfM~$9Xg;vD9N+(b>58elgq8I4Zd15!7_POtH95b z5wX?;cvD3-s8ppuh!3xzy_3ty^akRr6(RnYY{XKkT3=P+9lXI(y%ti9SYF7AtRG`} zhL>$1HJ;C43#~cv{A!j+BhBU>PuOc3Ii@GwGjXKZLPqgDhP;VTRJ{ak3!@NW7Qe&#kC{Q{4n zkjV|ulXXKHf0t>CFBN*s7>e%0vne%$S7Y0#RR(W@&If1kzKEqy;#r~gp5!2J2kb0V zbIgz_=cyYTPd8+WFZYh?h^3ox8jLtt!pcO(#!umWucX|EV1BpyVjTr?##^8)9u8} za4}1HR=6F%ma!#tpUImfp4nBVB_v8-^Ge(+_k*BHe)xCQk5oN3#9lv@Kp9SHR!-wp`V-%|3N?ZVGuPt^4~ZwT1Kn| zPY;=%WG?Yn$ZY&w+nL|PimmrL^SYcZqm5noK{k!7u6!@QaM=2HH=f7X>$LDDo-ySv zIbC%34SXTnZ-sjBUS2kl?(GF4BkQeRyoyt@1?H^yCO(s2*iI9B^Jn>)4OT=Sv66OD zgTB1Gzu?juPbdvb@k4sCFYn1_)AxP(1VLt4boA8Cpyuyr;mvYJciqgdW9&04^;VwF z62Evyt_F7sR=H73fkgvu<15&1s&hL(6Ema0wC5@$SJ9gVW(ykdv=*kGckrVTe@t_l zLA^uN^-jJcbI&_wD><8@LIclF?>P1CRk*EGN1N!zyFfa5wDd0iC0j(#-OZ1(RWz_4 zzmEU1fwHdUnY6nfk3fkd{dg^Qlp^}`wrrBstv{;qQ#)zVJwS#;YW9?SxgP}s_wpS6 z*HVhUk5{8woq6>Lz053aIWHK`D?Ewz-plJdB|nMzfQOa#o)%uP3lS`2<|f*EA8&|h zuW~<@H2Z)WJ^;ohI3gN&`T^dRy+B_)z#Fkybmjs6HJfFveUP_jiGS=YL$QZ;UZ&Vz ztmFY)vQ;@f59RO{m{FRZ!!yzF#vFbY-K=|S+xdY+4A!{tS1NY6qY-6 zI5rG1=@qex5(d3}gH!U&Qx2Uhbn7m0Q_kl(WtLxb%FJHnq|Bb_d@R}TWQ_&ArTu4p zgM+sl!jmJ)07-*~@T;y!T7pvGYqWZjTBClM(k0`lD3xjs%?(Eo>#9|!Cx-Hn zXnpKZUi6PhbJQdJowDR@H6F$XiIrLKC~tPf6#e`tzlO0*l=3*A#NMT)kMkSYa#Eh) z4}k#{q0=BgUPxA4Mt)|xh!U-OrHhG#asg#V!`wU-u z1pwbZ!*{aGJ?q9d3yol@{wSnpV6+7{Ghwfx~#<6XSo1i4E;Qc&jE2ug3o!G zN6`Gy{65hFwzD|OdV%{YuYcnU;E`9vt__V|kXlWxKT=9LxJ(wP(v}PqJp#N>+kVW!6?xlZ6s1S#HE$ z;@9v?Td4g@yfb$6A>()kJvW+1T?uy;I`a~Lf)!XOA!Q_bZ#))s5q&kD??5nf0&B7dOL z?bB+O$H%gY2LC-FA}5 z%!foaW7}%#|0H&zk@=FvUC!Q}&$HPKikQq_;V&H*`*u1VpTre9@-p{fq+(%E@nqh$ z$-+X136;Cd&Eqb!8hg2%^}uV;6=JJ<@(r+5;Ct9x{FIO)hYmxl&rahn;QNuefGf6u zKUGSgglzxs0>0i0`m`RL!H1|UpT2*ew?^>?=kYXZJ%<-SINmvjPZrIgiBs4hkQGuA z%LOl#Bg_5!)wUmQuG+{wjVO zI%?EGt4g2UYV@GkTl6R|7{7IIAs^@!RK1qh=KEfy&Cyy0)%uJlHx=iB=KPj0Hlr3& zg?Ii{A?0@lS5TYtrU=fA7A3;?@;2v*2)5G=RkUXM=t)2|P9n)qd1I*6Ti&3x`7@s7 z4GwoV4Sdk_A9!#9|H1u0umkuuRCeWoVyj^geJ0$Up; z^~QX|Z{vYtS9B@9L?=%37FO-=_%J1~&)t{yowAd^|A7Ysft~xD9cbr1JGst&e!vLk zxjPg-WDi#Nqx^Nlzh{k8e2;bfG!N^6ytPh3-dekUuZ#RkZ*aR?A0Kx8+qpND2M^D4 zhz=ii`fA0ySP5+Z-Dzg~@3I*RZ}lqH$38Db1h;h1a-(QtBK7^n`zqQf{>A%~sJ3pO_a*ix_1f=Un&^js zq;!n%gq2W2ioauo684874uwW|;{%j>z}we_PAv7E#+`@5~Bwy3w@-B@)7kq31)%wHx5KeMq|L|60Y$3gU z()&k+l^fBvQ{LJr6U_m8-)v)+mk;TOqWuNi(VipZQcg3ub%bR3XC`^`V>3&2wHL0+lswUr_Xx3)fx2(>cp6JlOvEdS{90TzD#du zl(%CTew7&!GAzl6kWHMBSswGmAp@YKjmQL$abO`#A5EJb!p8Q#yHpw(Gr0Mwi_{w3yDXJebeSK-eFu z5%!n@{YVXFT$zx5WkOm>0)66D61uuI>y)HBO{HF$P&K zz+7X_rrL^<3|8M!Q8Hr}@h~%kAsOg)5EWWPFDlAF_96YDDE&Jv=E*vUBO!%%jF9Rk z$b#9PQAeF)8O~%Qj*2sxEaU4K5gqoKT$Xv!F5?sDw$b#4s(cFc+@>iBkT;&tlwQFT zAA`7?O6AW8+Nvqr*b?glUHR6_mRh+1p+tM&TTM0(&D{W<^FTTr6ZP z(H5G;F|IeT=_vi!ht`5B$^#72a%@!$a|yMqstm`H`>3jN9s6iXHKi`vtXEB`&4MGa zOOK9#eI~~ zs4=Lo^1Z0h@fKw)qML3}-bK_JcAIhtGLCiEUCJ;GGSim(Fy}%Dy6OQXL96x2*g~<+ zKotlC(O1ne{q`45GGpn{fl5cP#D+taOzQE35}6*?=usb(j$30FjrP`4uGKD&}#gw(vh=`^wjfMD6(Ql^m=oyBIN1(T;()k zE>s&Y^2hdFPK1ik0@zZf&@)=RjcVJWw>HbNLEzsD}WZ$W7Qq2oDSS~8Na2JELa}$ zAQ;w6nw^+%82zl!g<>knfsD!YZ#yvS= z`A1o&mVgntDuVJ=`Gb}z`GP(y)(ROrUBB>nyS+eW7e-wZ=l+EyG~LIi}Apm6&4|((rXkEZa)7 zPDzR#zFHg)J%NQjrigP&_~8_u>Y)wml-}_yjVsAY7;vMox;F?eUnbQ-mtymK;oMvKrKc$fHxgufR%9e5DlB1X7Z{NDO;h zd9VwFc>|W%+M}YB0fQEun6Jjrny-~HOrP4-`S}Q4+d= zM>Z;54gS|S$_uEmRB%E`w2ptL+{VGr8y&zq;WtVc$onlvG=1eiSr`Y$CGS`1;VIdF|W)U}2@MzP7fO_pdrEX&W zd`Ew1ubA=kFRP(P(F^;O4cH}W9>#v!6Jr7$zPMj`5{J=?`<2G_Xxm^z7<>S7+}o6Q z0ErHSCl4q!*{4>_uMq9nL7H5wgdrL(Ek?n&==);j?!YEF;9&az6z}Fir8>Jnw;oh# zR}RtCgUT63^y+Vlu#_C(Y7;6rq$E?)A&9IpJ%d&qv!#JShm?gj^kVywXX(L*K^C!R zTwOsahHbAZVQ!OVw<|Q(!V*`p-mJ$_aPZft@Tk(Ea_GaylrJ+^%x_oPTJq8SGS-7d zr6%BgtIBaDk>hOK;CDG*sZD$4ccnjDOuK$p8UW|H=P)-#9IK_pA5yjeeYB+9Ka^@N z&6U4#Ec^q^>xxl=t<<2^3o&EDl<^J-Z=<%a#3msD`*8Jp~b9s>EX!N@ZD-Lms8CYJ`DSJJd2 z3kro@x94`H4y`&b#X6v~2f9p#cG6c;jUG7x%dF|FjG-5R9!X#wu(KVw09H7b(k?2U z5qsn!WJkGBomo0?Q8o)|Y+*IHq};@=pxULD`Z#kpB9~n_8uW9|9fp z^{S2jsS!o)SR1`+$&TfAR92J!yH{O=j$Ep%Wqq%xErbkDAx-@jdh30fdJ5C>qpr3= zImwwi8|v-ayF!+Wv+=meP=z^fr=dO^yXiwQXJ&Mnd6{nA=~IU=m(NIA{?o74LM4GE zx*?#pV;|GR0Qz=-*%45OyPK^`-VW$eMKy+=463u;(pWIH=%xs@ClY2vsOgYCH$|up zPiR0_MXGh#r_?V}?Z79GqlUlZK(RSe0=+9z?ZtLm4Wrci#XL<3sSj38t~H|7H_?m4 z#IMon=WMSvuL=%tQ2LyYRa4nvE4jL=`2j&%vf9U%1hc}4jwCofS#6qGLSzARD$XM& z{>bc7>Fy`>Kd;2o!{-%W12?IR{1z%J&V{2(q*!W`qSh1w$Q>za4ThO~qPF^zGx}IM z{u8#gk*R7th9cSKqEz*Q7c%OCG*#My{zy|-VZIipt4;n1JEQ0fwV-kYZp=`pg8Mv> zsoq`r1n$ecD@JeHqQVI{O%!(m?Gdn%mbvZCp7-jT@?O zxDc&sq$bdXhU(K$rF3nq)}^-_slig2PKruOSPCKjW2Mj*b>etxHEV>zyYM|bJM7>mHKYwQo)3c2BBw8TU8wC+y+`wqifXkzt2ay$2q;YqbWWs=~ zaoV*im4O4OYeqVRvtr6F&gBcE>$Gc$b+D_SB#pYt&-&KXQx}6SmQ=dw_v{Z`1 zQH}}ZPd5s>IYv)+SD!~$e|1-XEMrZi-8ZNSV(Fj1LCpile7T3(4dtZi@n{cqsL1Nq zQ(f5VwWU%D48nC!=w9=eN+~cXS7y3ryxm#Q>3ftL6*Nm-Zd5k`*c!dm44ye{nUvon zor<(f0v+j8oajbTaSRRatrkEn6V*o*C-pXcRN)UNv?O%AkJ>`}ZknWzE#1|cw6KS& zP>;TnNZb-hG_J3D58M`x^i?zdBL}utH>+vd_N5R8suP;6hwk!j#`I=bt#47!Xl%CC z^lo(}V{5Gw{nR)xU)-mjL)2RH5ISVm#+nNVQPKD2|U&Z&NDv zmwIl3`tU#UK#6%-{q+hD6#W%7n?c5EHc{;j^o^Scc=nPvPrU(&z4FvS6?Sj^o~Le< z8dvz))Zy$WsVSf~H|u_kQ+-Xn9%5>b*VH6_d>xHgr&O!A^)I0^5GP|Jr@ht!3V|3A z!D(6OX$#leN`iGXufH+!wFW+&!VA?@>y~?r*EwrM$EK>k)`pru9QzG zz-<%}fqgNk(V{h2W$E{D@!d{cnji2HSf7hp=>FIRrU3}jiP*l=ps2y^vg`pMqg{7{; zi<3k`3ZRYz)FL9F_6J;LMhZ7`yG6j4R+vpIuAp8~Ax2aHYJ@iBZ#}3sVph&jTec2` z)mbTC(MQNGjq`oS2pg4J$B3XX-0H!I0Q4;aYhjpM#q4O9IO;c3ty&EljIvo!dQ_Ap z6d|%!Bh*rowXhPQ1)y>;ps+DrV}6Milsno`8PevNYF4gSXjFxMLRgbwRPaEw7g{11 zl^Kl6B7(7@g{p!gQhZ`uT96A6VRF8l+6AUqpbXO_^sKT;*r|k4#?~MO!alSb6gUrt zMMPkX1?r)lATS-4rUQod!cxa2)H?20FeewTUH zomWGt^RkCyd1qmBc>seFDy>vW%tDhS$pU2JsFmV{_1Mut*;A$?3hk5^CuD&V5QwQ% zTpI(1iIeVHq*kX-XRA*&U+0l^VWo9Z%FHxb-^MD4(vRL9tYZ9frsRhYr85c8ZbIBujW0imPHZ zwwt52qgUssZB*C}QLy1gxNsevqgILGWLb{??wG4K^hUTI9%3fGq1P9vlBrl=DytoS5+=S_{jw}mDVYbs zRBZL0U@8X|tAeRKxCDo}bb4ip`ZuOBaj81Y_&>;0{@>3R6^8N5 z^}=TLeI;wc$}&!dqgOggLR+Ffzv8ma@Z<{XwykP+j;%_{yLX+%ndbX#YKq+;^dwg1 z_v%vS%0J@bMJf5mbz^koA6G5m$Uj`l>=gfl`X}12@}s)oA3;V(ew3&4aXZwnw8ftk z3RTagZE8j;*v@uO4i3kjV8?)2yt2>(b9yF}u}~ge7tt|zUBJwvSv%FMAkgjIsR|vZ zI2KbsRZFJpcd4JiLrnik9mQOk(S_TQ8717u=)K+Q+^EA}LVc#gheQot9Wd8W|2?Yk zO_Rtvw+9D>pQ-s?$Uxhv-(D5=M(ee`YHtqx#BaZ-r?QG+I{J^DaRd9+_R*yj1M4;l zcO{D6uf~)WiLK}Nt91kDa^`XMrAo(ObvXg?$i=$gbz({!dJx;bh&uGZ#5d@n+ z|AqOsCZALjnXM~{3r9M-l21>mgCM_WomQWB!EuSFa`N1E8mgcF6>z$qQ7@Kw_JO{e zLJ60D7II-}l83jW3V$B8`SqnH;PNMUub}%hk0ZXjpgZEbOFxeIF6n2C_4qmUMs5>E zCjEXvjVVQk@mAA|>JSCFGq^VLA7O-gd9_oO&N|(zXe&VbwNy=7*fMD zysGwS;xAvz^P&s>j;|#PmP7xRqN-_cqqH;`4o}pQXm>SjaOG77#A+L0C~96^lU~Qd z*eGjGt*#BM@T@M}{cDiXRg0nyaaxjg@oULbUrNyG(1bWmx*v#JTp!12*RV?ax2nZ! zIFG+h7iz(&b$)^tU23$o>CXhM4f}waCTcu3)EUb!IW)zRvM@^;qIt`}ML>S_%zqMPe#ZQT*gsjEF4HF0Ah zY@C2nh;QaZO0B0oigHuyX${@G1TI^5Q0B6A2W672ucJTeY45pH>XvY*P?q?Xmg4A- zuH}8Z)C?`2R;FuVar@<`bWN%T#YH@1bg!7cu!Gg0^Vexnu@Iznxw$y^WMm(ktS>XP zkbBQEEVgUm-K>}k>0qXoQNOTAdN+FlUBz-O&mbPK*Deg=dv?k*Ff8IXXK6`58QaS8b8fdBXaeb{p z#Y1Eb(2T5=LH9J!s=F9N)oJV{s^1W^Dk-uFeWe@9x%G4T@=r75@umx71Rj?6rc`g2OVLTxog>tt#>!Z>e3!Ki*ECUJt?P zrOE>(&Ra#W?1jnbkeX*WwNWX#S!p6w^=5O7D)O>^5MQduUJ_Ev-~e0)5^_tEGJ` z+D@Q`t+hDOb|i(a)~fN>*HgDvT5Sz(O2R_`?5hclx>~#KADRWNKwHhr!Dpk|Y1!x- ze6|4%Y^Sx+=m&HgOFdhG$vd4Ob4jgokr;-?R60w|pc$ri6O?CXOdR>er4K+^$87*m zj&Ql4%W)ho=<*YX3(B?rChh8=eGtaJmy#sTxNaHnoD`2x=sR3zc1LZ34SO}}a-Bwk z7YfR-z(%4=*lv^~xjG%XI$o#4C?UDNNi92TA8GT%(5s4}*K#4p(6j0K>$OMu#jgb^ zw}ndd!u679W!8;dw1=^zKk1^~Uh%qb*cJTwCF<8z(vjS8mUY!;i~Xx#H?$QRyIv^c zil8epi{SdPm8Nu;G=wgyS)03S-J}dEwpVbUF`S?IhCaGc8<2E)PB0O+_nK;lVv)eP zub->4FW*gRMK6s6;R(yYgEwhHufF>xO`Lh$qy#d1YlD!!ptsikiaq#ZZ*5qWGuRu= z+?-@DG!$XXOz1CbWFH|IowaVgO{)`(oczjK540Fe%JMU;2@hz?c!Er<=_HOui4xQ2 z%2{^~(7eFbT?4gwk(;&)#H0Z)*ekbEjX_!pfLlF8%cKVfX}w^~{CJS|NU1#+nu!*J zK^2?nv%y+swbJzg1c!ztw271<+N8|VS>{&sW9PoXcsrroGE&6t0UkxzJ!)Q_NHbhAfzZ%P*U&Gi zTa+G`YvMToz;;>t24x|%R8SG(1_pekr1nj!)gA*FUelYCf?Ez@^?LYmnV!xO7?@if zs+6!AiWhaIDoz#cL_opiP>;~kh|5iA#ilACC#E?!Fu_nT2^TJ*XN2ok&0$(z6`OkT zRD#5CLxJJKVOlJ9q3?%jMN*=F|1qt#cIF$5D2Zx)s0iZ#oCoiuA&+bMV$~{7XxZ+i zNLOrg?$%1N?H9PXYQmxKmnXE7q5|ZjrimQ~w{-p_fnKX2yKZ84@ zU;j(%P$r?()7b4S>WFL5u0hc~q&WsfE|>-kiX)%aCY7ox#xOvoJ4v2eH)jm-)23&uZ7GxJh^I2<=9<@%Kk)_hAPg@sbuxsUvMZA?!ML zjMT=!&wk%Xxq#(~Dsz-}k-66d;nymqD(9BHCdN=q9beF1b(w@)!m+@~5@YE17qrQ4 z-{>R4n*Ab#CiL{h7_F=JwYYg7L7hiv^{DMwDK&|Ec-9?bH8`qEFt59=)S!xR4_Q#9 zWCwdh#Bd_#-J4XUN|*T**NbaV-Ep=&+;SY|F~iz6PU}}PM3;1&AxhFIrd|`IH{o6fK4y|K0jxidJ9G{qZ6%sQBOYecZWnE|~*& zIF*|iHcBVZqi<_x;UzYBn%0}`vDQx0YH;>B?V7IDsWA?haRmc0%;SEkS;p6A(8^7q zgm<)BkRn>Yqiq!yy3hMZRPG%^0!+PmyaYyNDltCy{# zvmanizqcC9)gD&rR5apECxMj<9*LE$v}&RDD?h%$n!QMSL^w~zFVUJhp3HG!X$`B2 zU?KHeqGePmIbtMYpG)I$@Nj-}iB_AR;s}ru--YM zE#hn@^**jG#d7hV(B4(CT;`vKRQkR3(`oHTP7|1($Hq_+*Sl34gOi_FouKhxiU$$` z=xYN#kM{wz^{23Ua2zr84C?6Bg@zCpTN=_kULER~W4IirH*nLE6g`rkKSkM!UPrSP zCUjia>(cXzUKNG%75zp$`mtZpyHzYYU$5$Q;7~V2)rAkA>}!Xr*U)|ufZ%lM)x-3* zUzh$Z0+8OCp5h)|0cAbf?bRbtbCIS$>87JnP3orW>7`nc301x3pQmV{uEW*;7#-Gi zaW7Z)xy;bR?%>_(aBcGGsgP6~`Shz%Q2Kq0^67&seE^3d{QAEk8qN0W-C1>8rtAr^ zU=I$hLOdw)2>B@()N7(pW>9~OC2eL%hx+iO2<;lj#V3kFCSDn#C!u$F`Tb~w-XX4R z3EAjzCK~M$sZY8>gcoYGF6C4F|CsuBLG{D`PEb|;ZxB@fjMAGxj>-(_!h2Ot)w3b} zSw|Re2y8;9yOp$PSals_wvN^xW<}PlX#Hb`s`td`{jR{?<`_M*ij8g|{W5TVDg6ek z>T#I8I#u<1r1bkzH9Y~2j^gr$bje7Vd|J9!U~4gQ+Uvsk0{`2JEBdh-#DeqZ9I?QP ziq$`2?3ndcb-fB_$7yE`y(2DSr^M^G!R7e5cs(3-@`CNG@fGKKE_*u@3sl>dYzVV?gjZ}`_V(pvVp%i#R!jsWWTqa zor@l>$Jat(e3qq;dmIl0QT4cOU>E!GI&V%`H;YAXZakg>^4^FG;P4H|Nfz2s^kKJx zDo%ZP6v$e3op_v^d|`hl_$U}yPl2$3GnIc{`#tRWlwkYt*jd6;VOC0nIAw_=n)GJS z!fH4IXDkg26gOfbux-PoL#2Z8nsT2o;ER6k9^onhV8e>gF#8;EK#mgLc!)+kCmBMr zU=grW27m(`%&w2{1jK;vGl|@{jh=v$emVB!Fh@Tu*E( z8+%|$qgA0fxzI!JqJ1wiqbc_$Jry(xK4AAM@?Yr*-ZPojAfQe?^=Q&=#HQv{Zg->p zK>2pVQc6v+0HEr|P+&%^^y1mE8+CC^mT;lz0ByVp9WL#qzs%;-wKwU_ap-yaCctw= znbDA{d-cX9TR^Y${(E*T{n=X=Y9M6RqX~WV8^fjchjO3Lp$mQV3<&9IeWgfnOJBVc zVg-Hm)-{g1Z&6)tLmJr@NfwzR9F;)J80|VdP2v)^%_n8K<(FA0#?k3!eaICLtE|0Q zf6zT)6_2Gy`Ww~QRuU&HHpQ+x?iSr2S2V6v^FG0b9UeSa9L>&8kQGB$p1SZn7zBf{ zRP{ljWn8g3j?<0L>pX{Z_p(ZMr4U zF!m^(+%bi+4IF(qwjPl0!=aO+K>v#J#@`x9rmJq#@2I&3hsB%*9*@v;E9UbsLt^gU z%pI6xvd7>wviLUrUu+F!->%m~(C2nN!?CzvN2nL}q95y(+x2Xf9=umyRi-hoXv{B~ z3j3VKI^3rhmOunmlnt;AZT$WEBNgRMzaP@-8aj4AgpW1U>;XL^K_VVkIst?jEKA05 z*DPQ{yG0-M(@nfTbFQEMP<&b3lqx%%lJD2!=(Ya38B z1cFod=pD04VN9$5CePbIy5=B6+)lNPo?)-G;Boz7B}OWo;gTsS6n8`e=IB}3PwQ&4 zokBgW*cql1vHeaqh@5yQ$BEcEldXGl^)dK5iKS6Wb@aMnDGLf~O` zn&ZG(XpMS7&u0;bH_Q78Qqgw6sy#+u4S8|1bzm&^2dGYhPtZV%ri!!_kM#FU=UX*MfxURO2HFb_Oz}gq)1?P-vM*O~ zUU+VbEEI#^D>K!{%zimQ9;7HQ+7VzCOG}T$IZzcEAuc*YV3vU41O1Ef0(OCKF&N=^ zit%~SXihSOJ}JKW!NM`u>JvhcHH1%ZAQzH?AAiN$uZ92)6&*karv$Mz!7>3MH7e`@ z&;dLkBX^20%SrKubr^3&bx4>DzYrL%4T}vq}kIQvEMrMp3`$-jDoXPD&#% z1i7;~conbVj1&*4!kgCv3ABdj4|k=7>MuADBhe{(qFz5&O3b>Q&CLyfM@$^1NzMz( zn{Qo!d=(ke0Zcd)S&|tE22c{g4EhlP2?)5wk`Xk8zapxOsGTDU4d(*ic77;V_$})g z3Fb`T7gGf|rC2OUU6d2#FCoI9fh>D6%`<3*x#tG)A)R{V3W1EzWCxBMuZm-bXvAJS zsOi=N*@_h-&H$in!H!T!Eja*)C5imze4S|5UQX*&Nj7*#2r~v)v8=Y@cmc8(>&q79 z?UJJ9JmsU(S5y((pbFI@=nI9`(NB4LYE>`%o{{O$befnm zTo&nR49K-DQHtHyK1`LfUUy#p#IijsNPY6Ff(I6hPy6w(?PArV{8kaZDRYbPiHIEN z9+50&e+II!UG2x}>Ll6(TblNF7 z{{j0*5>w<9cJVH-X_x9!Qm6b`^W(Tx0<>HcK%*pmo6dPVbIZs=h`FZZ=GE%JIGoI! zG^cGmoB*#12oy?p82QB1QoVz2qpaI}dl4q{XxcWIy)cnDn8 z1$Ciry0_Td0<6X9Mm!@W#;OR1r*!XdJQfuCm4!wLGtEXakLxvZujs`-?UeLVY2zV> z*@ark3C6<1P6oP7f%pDSP;?p}%f(`KfsuKjjXg3C`wm`H&qd}=6-!_r67ju9d}BGl zuG}dC##f+Lun>XaaM0#s;>e5Bx|udG#Ut2B5VB5+C-fqCt&rEjun=^L@QTW)2QDUF zX!D!6Le4O8hFHj8YBKCapXBQS=t#cG*X!IR^bdmRp$)wU=7ph{+&*;iAs7XClwcCV zp&ty=BLXl+(V&8VZjA6iKQBmH-gih5QiA*v&uA#rZ88*ke#)7wCmK#S3cWH}kI#j? zo|6Ir8yp?y0dXK;a*&1?l_7dD&}c43E0qJ12H<;ILL!1Dfcq4WLozZB+VGblA)r^# zj$lH9DB{4zY|0UnAX1W3} z{9U~dV%N>kTRCEFJCMHg?097ccGNstI71%}iMG*9thQ3_?4mp2(bD}ry@R%Vx>Un# zSO87Lr|;pQ;TYZ9tksjK(JZ|i94(%oCG7=L&%0@sek}H~romh(-a)k=*tWi%t#|UG ze8OD)zRXk8%RFuV$8>q$*fsqhnl5E^F3je?(44tCo;J54=jk5`A^UjSYaDPG~1B@Z&^rdhXqp&#P-wSlu= z>CNfsub>{5-|trbF8xPe>u=cwThpZVdQ7!aLoakM0Tx;xuh)00)orJfr?5zI;1>IU z5Vc_BShz+1Bt@7$@kEGVv60RBXok=(KU{oDf}8k_F1+-l+2qS_^gdBn7RdZoQlu=< z|63e?$I^mtp#p~&&$oKhzZEyO>V1V@R==%!o3dsC>;0`dUJoBn2fx!lV87FA+w{iq z_L>%8+L!tukYX4d=P%m3O+RWbkunjSt6Ygm?9td1#V?E4@{+w{LZTHv4I+uOL|FQ_ zpBX}(AD3YMv;i|I)^jK)G>)6%ol$&^$4T9~cDo)ePMLjv&>Pnp{VDWV;E_-&jCDVq zN=TYO@BIL5EVtJEptogErRh8Lw2aYpu-MT|BU{kHLJM_j8@Tkl_ zsCP#2#6f*G47PoL)9WL6;Wzzj%t+5e`b%Qnz%AW6dPuJ>Nmf6ir`233aUu|53y~5# zzzOVPKnis~0zK0V>%k-Xbm1;18la?O`d)lXp-{(j80BYjltW8KIaZ7gqXZR;QI0>S#|KJg+B|G6JO?us zoJGdt(WnFNV-{#U3%0QCT#Tmx$!*A?0dMe7H^@^4Atm` z`TSEg=EUthE4(syVw}(Lcqvop>4ylaKv&cRlFMYh%kJm>NNciTIG>O zpPQEhwaHB2vqt;j_;2W__UWUOL*_)89tekKC3|ou)@+pQG2h%O%R)s}in0nVHgGPNo~#H?anA8T~u5cj9V8IAFToRVDK zv{g7>`Yz6x83n5&UQ`5*b)l{IS})Zw_IXi$aFWpl!AD6(Jp_A`j5a=R@Cy)FwPc@F zx2EwH$7_0@g^k;4t7sGo@8lr3mIM+4ZBfe&4Jv2KTh6OK~$wqt!EWme!3KyyG zArQB4eJ|8B2)52+g9SeSm3I-*oU=bSBBgI&Qaa5^o+<>5eZH!r^ zxwVb@2zJyqnkN{+dGcnoVb(>n6VNOMioaFSX;!Kc7mrTIaPwW!>9~?kh4A8~yHbtY zbZVWpyI!1OZdYaD6OmuV(HG#e69{5Jnsyasdng+hjX2|*zS(qUKrP&KYSZ zF7aF+G0gnQgXCjKj)VR`1(St8!rttq^>vMuWG}#rjQENL*P)2;|BdVz@dY#Yidu(6 z5=GWCPGDGZ_~Rul&3N98%o?9&Fhp>yg}mvl}|+9$ru5B zm0=`e+y^p@v@9&Au?+4-DDV*qU|%#p7m?+NfYiq@^9vER5cN^3OruLu6<9>7qiGQO zXlAY#xgR1I$8m3j5HyYQJ7&5R_?EJ8;u?j?tV!@H96(=Vmlx1A6 z%DvgTE6dPS?Bn-0G8%(}O>Ja|_nA92HabK?)}7GK=qd$=A53Eu81|j*jiUkanw>b~ z!*j;!do5_l;pEoq9gLm)`mJ)ML#%SRfYcph<2@`lUYS{pPvjfokR(!tn?VT!Dq+_Y z{V0doe3w_Z_I5IsdZnoZ-qX$|DRw65UjTLcZfj9j(8sBK7av|{Fa+A@;z20=|Ge*rR zpDCI+U89caY=Ff#8S*Mwlio(3EaxEP6;0y38s{M76=H!nP}m0{uRI7%r@pruy-Qua z{77`TzK?Nz<_!C%rR-L4$HIP#$!%q_8%2u~=$gJpKTKOeU!#SD7_XSbiOoEm6KWw( ze&=s7>buXYxNteYJ>|Bz?HzeQlW=XKKDQdT0TI&a7r(7>w*afoZN>rjY{c!eQQYmu z5)|8byYY}H(c%uHlY2;U+jV|COSWs#zwa;}a@(zbr||?_8D6>5sOv5D3nB7w9AjUM zk@o6M(&k(vN*wj2U3(vnpmxN_Y42-6m-;~p8%yof06c=I*Ne{@^HrKZ#<F-Ea!uvStL z6j{+@jg`VBbkjKF8U&H!WpINXykZBN>>zT2oo5HH*uf?{hD_8X%LUHHK8(`qUgUUJJOQJ<+syUJR_19op1LE1OfXj)k@ zJd5!OhR?=MK8^*q&01Lhk+ z#xpz=y#}(E+l2)HCb>UET?X$iT4Jq^xab9>5}mf#*=MLT4wy{McUnKjZ_<(Db|vY4Mkx1a$0>WxYEcM zN|(_+@rowUY!pphV|-DjyA}z~*7V_4(Dm1}b*s^|Y_`?)J7Xqe-&!ZO89%!}vtBN8 zVkv5e@zUkm$9Ebv>4zP7imRkQnbdCQ-;!osnN(`VL>;SemodiumE1C&OBx)x$LL-G zUe>`EXwF{n@^7u}dyNbRjC+5942Q7!K4bX*Fi{v#45th~gVzZw_HD*^7&_V4MXCar9D7P{Ln?k(&)ZOn?t4}?yL_B|GZkk#?MqqB9^ zj4a;~S9d~BH}E~i;91+i*WSPt>BcR6_g%mIwES%-6|#;HNfw@Vo~#sahNOFDyHO#E zrF#n8s4a?3b)(42qunii@wpSqHaFTWVK;aFl+(K1+(|cTH+R^LqPczYTRaU`6QVby ze_S>(V^xq%Jy0VI{41}d_w0G z_9rB3bg8>9fi5=oMbMNRd~HiI@YGL9hT6l2_lT^t9=>AEex>MMz8>sXtA8)NevhZk z@9pc`jNB$S`#uRE_ryKE`3MT`^{of21Ml;t!TZ zj%CEAq8)A&^ZzY%zu7+zxIA~W|6hr}tSeLSCpU_M+bHiAKb}*zvTyaDWw966t@gm@ zyDGdk*!VgZ{k3 zFK&Lg=}FZ5PJc5y6E7a$>2C?O)QUU(LOm-V)yR9;pKQUp3oYtg`u=Wzx8$ygNU2iC8)SPqnXM4!6ul{hJIn z-3mSHzZcJv(qqs0uf}r!@HxNyxz9hI^JfOX!mkU$9Va$iHT0F0@w^|Zy5;obaQ~%7 z&JS+E=fC6!w=`QDqlP2lFD25qY?T(oNE2S$8)?=E|G0=U)u`=AfAt9GXSq;H{4Cc! zBmFm**LalOI8;*3<0zjVl8Xt|#BVzPHqw9V6^-{Cg~m6QD)j|DHp<`Sic;%G`JcKX zspn`^+<(Z0T|AQX*l2&xD@ttDw=Tr4D{+{hB20B~< z^!sIjo>dCyX*8>XR;t-UPeCj88ntYg?V+c8K6IlP&KznnwtQHk?N(CJirA~OJ)29z zlJ5DkR4c3KOSDoRB7_nY_^S&6u{x7j9PMz$(MG+$PRB@MZw)NL^|9&sFf!#Cx>k!O-&%YC?FU;}}6|&sv z+5TiiJkAEck=$&E;ECRy|S32d#^c|N!%eqJwk0hqHaQQaE2&_Ca2 zM=~gPq2J(U9`*Rx-vH%vKlT@j*L&N2;;+RCA4+kCh58@rQ28e zKY;dg#1?-ID_rQ0;FbQ0r*-`re_Y8=h`JALJ3k?cYgPCOQR}(2{xN!Nq5GTSrEE{a zs=3~;dm&7uYyz_de6MYG;cH1pHv3zZ0g?b@hIMC=zczld$O4EP{LWdRp{=UPlB$}! zclw*VCy3G+H0vk-$K_NI>2>M#-TtAG+Z}6|!{)2+f#{Mq(!Da*ZI6GL>NEhosZb6H zoof*l?e`yuwKXFPT~pFr`B7wTIN--CD_>YOiv4dZIP)(*?05ATW!k8B#6QpZsnUgp z-S}J)7Foqd{81&3nV0`|K+G|JJ~mN#I|t7V#ED;w4$&{i{Edb3QQR~VKOT47e>=T& z+#gp>yzGH#w|}hFzTS;HPAiW4pNQWE_bU63_&KeHcVXz=drx7zG_|c{{~~Z|C0YOf_ zD(T-vuG7CF2pIh@V}Z%QZdV=LW(yd0IF_PS(ci=pD!3aoa0r8rLtli%ixQhQdoZj>WGE0>W z(}fqgk5qr40q%gJp$xj)9|*c7hWi8UwPU~Gpn)f_jevaKNi>P{cuEZf*7PW|xKYlv zC;yk9RX8Ub(S9157^sHe#l(PFeLvO+ z)<8s4aL9(ZDpnp=J7lI{8ft%2bQ8Q4J?YHXH3~1u_mh0D& zt@fxD=!7yYWm38!@9)(pxl5BrPtLG*={L)5O|==vLd^bo>1NtsAwE z-s|0{z2&WSqv&b{{aE{dPa|zxUvk^EfjHwvZ6J=jQ5%S2Hwqy3oS@0|0;v>LJD}6^ zsevI8Gk(8}jkl>VJ&;Lt>I6EJmp;9M^rX7wmw&y2^lJ429a^n-`?ZJgnH#l-u+oj% zLs;TQF@(94U$1<)Tcrg$Bu;UQ+BGM-QPdnmJsMzmpQi<4%Nt%ydY~ZUhf?LgwSbO# zth}j9GzJn z1nW?N&VaVJCmm4+9fXanTf)|46l_$d#pu6^-GF1>c&84Z|YP$$OF*~cJ|+Svar|7 zx3}2;)!LW9Nl{$?&kPdLDWGQuSU`>i1Q!MA`#^3{K@m~G8`(YqId)lAE{_FIR8)*d zX@Uwr(P+FtQ9$FBh!U@8q6QPsL=&PWqDF&8<^O%%Q%vv3^3&hv-^o~ARqxgD>fJTW z=2>RUlMi0_{Ac%k$p>xxWODwu<)0PJB|j^Q?@sgQPRe)3*EK&lDL)3kzfgN}et!1< z!$110g?-#`YJO^4_RTwOa+%Rf@$WVAd}GgP`E0J*bLThBbmtCfXskag^qb}nX>c27 zHZ9(0y7?Qkt@i%S%Wuvpnaq&Jv*$PYL+ntMO)Ze|Uo{M!NVaX&(oIKp9m`ftP19`M z3KfgL6z0d({!r+RBcl9!9a>$3b$0&ZeOm2(b#eaQ+>jr+zKxHcn;+ZijJ*35`7h)j zz2^}t@-u$;o?lv#U!MKJ;Qain^1WN50e|SK{An9IT%DiUwl$EAS6`PO(JB-0!O!LU z@_l*!m{#%6;(7cQ6<+ru@!QlL*Tk_|&x(M&q{JmM;VNJgF zhYz?{!d;J{TAl5+HTg&O|3C2le}@rE}egbDflvDx3NJ z+ww1~)cWI;|Hk{?$nU$GX*NFbr##Q?N0Y|S-f4aBTY0&|ICuVxnz{8&HQ~Io-PwHC zTlr!9t+$||4tqP_^nY2<+i&MTl$vjZNzcFhc(yZseEmSIrF*lKsYW?Em&wrj=C+YC zJy3p?m5|uTWCDEJ;Bz$E30}0%F17E2_CcxkJMcaMpBF$%JJr4x?+0fx&6&06s7-a; zj(6IQi*_o-1TWy7CLW6RgHr9U;(Z@{Ucmy>s%)TWA8f#N}taxT;F3{Vj(7QEB@oow0h5DB0E5C={ z`5d6{Uz&l6ct&36hCS_h!otPC_(=+5e}4RD`D&+vKU=>?fx-h77@PRA&-2xtX+PW2&~$X%?a!+D$`SZ>{npQsxA;B( z$LD#g{fY$%$8A7)EFb)DBwq&b(fhONn1-W%UOx0myzoW7$hZAFFQq|FNrB8Dkbddj zhE(s;WPpY*FhIg&@f^!jAU7r;zao(2aAJ_HDUj6(NV_ldwQ=8_slH8o^p`mO$zVeg z2=TNs(kQ;>U{>U-zic_#w$y;zlgU0NkkpcAtSXabM*?F1Ctq7dgkPEJ+xc_e_@DgH zc%5mSuKcn8fKF}rd;iHNgid4C@cnkiy@Pk=tMOZ%Qf3tY7J$5NXTEFOSh{(E_8E7j zrkljq5Moze_-YTsp2GjRm)<(=dLxC-dFRUU*`{t zNpfcjdebU?OApq4<3(TRFUl4gZjmz3(Yv43yxTYV-i38&CUqztiI1md`_{5tQr9HD zn3_+iXl~$lQS)*%lkODH%lr*$-d+Kn;ro4y=B}$-jxBSCn#WZ%*YTNX&W_`!ev3Tq z+HWC9FY+zl=Cy7+-7?eNdvtl~KD_W z1+#R$-5Jnn2QB3$%t%4kCeZx=E$B?+%lLKRl9wc>phqRp7NFBEND6vf3i^};`fxxC zCZVxY>rU^oE`gp5XmKb6-O9QbCD4AwN)qqDAW7SrTFFwp3mz9TP!H6!gPoeFYl`?Q zqhj>V6M>!<k z#p~@;$t$N|?P3-hu`?gdSoMBe4uri!brp9}?LQe+(r3bi5r&RW2JMqkJkU?dOyp1X zU`6*LydH|Cb$zAGOqAVFpM~-!)XB1@hcHlIi1xlHC!!pPasWzFsacf$QKsRk{vU?2{5L(oe&>vPUc0 z9|OFI@Ry@MO{>)@c+vhe;MJ#R>}-OIUnU9l=N(yS3Z5QfD_SQgT6;Wt>aMckNS9& z9Q6ZH(sL!=1=9&7ej3`yhl$yD707`c5-Um>*1nN&hbsS+;rMP$Nl$UsW~$R4U+(H1j==ooWe&DGQEiQk*NFl5L-Vv zSju!m*?^K1)}v?~j8aCOPD8XyST(i3J7~|2T6tWI9Lvj)WZ)W<>4C*UW}tl-22}7N z_;*pK2?e~E5KWnGa{1J#-iEtXEXioq!QmHA%m8slYYL@N>3J?HyRttdHh5=vS$l1- zj3wgyt>(CKC250=r`#{*g@RDy10 zC3nWqoxiFpt1^Oq#z(zu{?p?>8DmTpL9y6*j6tY)CS&ft$!jd*TT`3ahIfHe0?8}@ zywHHu*38|`ta>JK$Ga)i9Vt{ABBv&%`6QI2_|_>>hAdG(eCQzW-?k;Z96c`V8&P>S%Y2Jd1|Vw}%4Db_5s_4RlcWO*F#rDZi|UP46- zA`l7TuV@#-m5ygWLA#)a80dPm(R~j+m*ZW?%I{q%(*pf5wIU@NSUsf=3l@gl_*r?7_^T<{czHYg3Eh* zWq)bHBP|y)xuSl7!SCzJ4puJ5K!WVE0h5;Giz;xg0c_jYkX5ay=(-^uu6y%!sdgc# z)6K-l{iP|HYB1_Uv24*V+J(VtkNz6;e~9Twf^I=M0i_81E6syw2TjgOhyq}ui69oo zeb;!@r{Y5{l4w7`PEK_q+6Z1gtYp|wl3hyMnN4UD2Zt_5;_jSz(_=zJGWeG@eGY(5 z{57Bjvl4Vl->yhOuS%eQ2WY{m70~yjpx4IGo&Q_`{qLh8>17R?#`sk-{@;Nid_5Zf z1Aff`B{TDWYW%11o}>QMvlFQ0-L=?A8ue9vJi-O1-LQm6f+5q9S{3>PNl4$O(cg^G z3%vo7US~qJ_(mWN{qM)U=qv7cqIpip0sseQQ=~*MZJ z$0-Cc(Yqtc!YF9hjJ8vN^GB3Ixu<;#q2>-m|LLW%tMM-AF0@J(ZCyxp(eqbS#7=6S zXsI=7Q5OpeMkadkpMWPfat!KyQ3~;^l%@vsACCSLFnE8IqJ9eMgHZpl833e2JC90I z`@hCJDds7olamtd50~06Mmy;N(Y~?N{w~_%V;r+*cXAxsM*_AEpR`(Nz7!p!&`5+x zcZdmoS!x$MtQ<(RSHc4=Gv)BI6`^_^>cZGk9S`r_E#LOc*!Os{EMq(HE|^A?^*|;i zE$ZpPM94uS(pWoFW3_vVpV^;vcZQ&E1;*%&k~AtkG!`Ap0<@EfqvvkC3tpjm%9We+ zba{yl{FNFgxlMo;neDwmFG`@F1GF%!W$5^}64!DytastHy+LdNMDx2P2tkLmei?9L znT?4K=>@O+O?hsC`w_;X0}=HfFjf+_Zs*y)*!|bQ|NiddtMv5L<3P78Z`+skF5PlB zS1zuOAc!J(sO$`VPR`LKThn@)a6H#tPNjGN2afy7+ zKzSVM8&OU|xi9eHCpGU5hI^oaoSCnWOya>C$4aq@`~u}cXcrUoI3m#|3sIhd_CKIJ zI@RA3_+(m_pd6fP{{`x_FfqQ1ajgu$q#vs~wHMw=InZ-9HcV!jo~=)p6%N&RqArL- zb$ZSN{BBO#Qr42xH;#YW4^C-MIHkhJ6V4}f@5x#H6^1jY6Hki^P>dmjWgTF|cxfMV zLu%=wefiN+ulT@dz)u0thF(ffg|XJ3DNEH@Ug*z?oxcUf?%e^a0%Jl7cd_1kfSjiN)2NGcN}yp) zk1fMbz&lCA4H$zoir}AnP$z?tosjU+87PTgHlu`QDl_DEG`Q$^83U33wH~w635faw zrTSgyCvScK3lit}1FV?TRvp?&LN0~L>Y1wFjCXQ4MgLm7%lOdKbs{_*Sfu!=OsizJ zwxmGciDms5d++?pgK)L|@&L9^^U(Qa>U0I3U>6$LPK_hHT;cULV$1^oBic_#y*gDF z?E+quLjXr+l%6XmBDF)xjGoz;3^=o`-vEZVkQ~w!&B{3 zO6`^KGfV9PzoAsmoRGNeqjbCw&j_D=-SJ8NX81`W!?qkSf=U3*aK65lCEwrK90Rj9)l=|igLg+of$rs+c(m#p`EKoeob(+YH5 z4DDPBXdVoYi;$7$~TKv}3;lSOmhI zbxI(cO*6qUPGv(qlEf+fOaQRRx6J@-`dBJqPfP}m(H8+$FdH>g!k&5>EU+N={|4+~;2#P*(kuHl zOZT#1-h4tbsBlokH~EB~5@#jqq7+F9k(FDF#f`=eDKw!S3m>Jjecc&J*#9z0viy#? zpArLgotnfLhnEIIkr9^(^iIzubugx}#frbbUh``Cv}C*sii>h@U$?srLy16|PG?kV zESs-aVL&zmB&~zfU%z?+edMIlQ;9w)MlV#}oh0A-iSuKpq$Zp3Y8>^qr=amV2+IJJ zE}y62{;?~n<54Xs<#>N2Z$Cl1klVDXd>O;;jYEOjLY_0Pwa)#ZA^+r4{HlLifQ3BK zKxqxM54esTPkPerX^N%45-Sq*1mD^h-%9E6L{1NUy)5j6G!}Jn%2YoH3lPd=0{X-| z^);cMrplm{h-CiOa-54Q#??K@>243J0(eCQa9Z}RtC)0c3Rc7jBBNgUmAg5id+vfDdCz`+%h9n|dOm4t?_KW5^cv?r~p0q^Zl(!JTDQu|1}H<#W= z;r$Z4lcJ+3t}eCHzHY!fErV3UTD+6PIToJ>OE5>^{Smxl{O0%z1HVoxnWNAlE{;j* z(DM@dgonNTk1daXN4h>eQ4nte{=ft^(*AZikZCUPAK~-AYB);q&`~br}Ls?CB5q}Zg z*=FAVFcg>Y^QgF*zedFkeDE+7Yx%`gJjmao;t_5PNAYWZB^A%{4^VXe1(qOIMKf$b zT`k}6On9ekq$G~7J0C#*N~c}V$>0~E#5=v;k`D**heohNnuUDE;)Rjd<3k+vVkJV$6Fd& zW=)?*{cxHQ&#Lj-c6@@CX)XQP>ScXv6K%z$l@t8|ZIu3{ zXK8AIBL7M4t&G>4*^okb4DZ4c?rEa?L0-xq3s*NcH;F7oy&vk6&_5sLp(xj&q+73V zP?Ga_BE}z#lAa-;c5yfT&@hICr7TnLf)5I0=zhs4e!HO z5ep!M7g7kqA^N@Dh7B4{X!LPz`MZTjCazkH=(2ngu3|}wrp*w{Tq}*q@F*ooc0lV450C|?(Z$mKJ#b53XLyd z=Lq0UDd1fIqy>G5l9Czn`H3~3gz{L_Pr#=yK6j%|3UM1s+WGq^Nt*V9nA6V1zk>e= zOhpp2l#f1&9W+qPy>ey3ZUMk)n!f{=z^K0lrOdB63NdEi3lf!9i;`v)w>14hd;&ij z?R0K+C`lGY{~@LR5f>%o8j9%%ZVuo`)N0XA^*)eEI>)Z)Crvm2C26mNQ9_9~e-EKQ z5NP6US0^djHUOmcpNdhb6cdie1Org7M+ub7LX@PND;J=a#uIe80dORSOHp>AlRh5H zA$l&|xPBb#m@T|~Szwn%AMd25<-ALtkJJ^;*2wr0NIbJ>7o@ z>Xc0r@PqJPgO6B{*r0@U(8e>HcVzdO>&^+Y>vm)>Ym@01E^3-KKip^?#}3X(svqHh zN?=;PXL`QL=N-?cb~Id7GZaU*4cQ50o4<8Dn^vV;nrd5)?3=o01)<&Re16Sl)|FrV z2xGiv3d{5JPGBReTvLvGS&srO@>E@mde^7GK0AROR%Ls><@$!H+fks%wqKKm@J|GU zsd!$X1YQuhUgYX#pV`S6TTf(TtK=Y5WL3A&>sw~z^ev%ZaXdSO?>Le5kPJ8S?Z9%w z!1O|2HTad2ndvC9>?>g;`<~&-it8QN-<>_X-XA(Nn$v{;)Hlv?QO*c-I}8KGb#2Qx zozUpNIJJIk^N1?lHa#a&A}?~xz*nsSCcl3Q>&913VeKW*%!?w=HvnOqw$1OI!Uhai z4cAsxUom`Ja|}(X9q89LhC_!oxN~Rvvu4hnUV6p+QRtbfqpOOe*oJ0A17{`kV|#}e zd`;7J#kOTD!X`BLV1B{LY`BD9TryNS!tPwz^Mgb9%FS5M^(V3M1z*uE)iwjH%90&d z8^k|3iS;Y$rs4Un4l>G~Ei204sl)i1h;`<5x3T^=Jj8y&rD=>wz7v{`fr-E$iXZs= zrIXpus$Ac+W!JRLNLPcvi-sJ@*Pn>1&>oMl{rJyLVO=C&i8R-Cz0kyuLm7s~pFD-# z(jf{hoPrXlzN}~tpM5Ip)6p@tFo-l$^Ni39RKDs|=1ID(*^%X_p#j$PErWMBjSZ~Q z0>x7`4{EG719lgl!PF{W z_H;jR9XFJHOEGL`D3?xS-Ff>vS-bAxf^aUekQ(ZdqwAm!7}Sltp+*9<>kO8!k}X|P zBh?6lFmU}qK5Pyjy@Z|AwaJ|YhM1vRk!(8Dula^$n#1_YdN#77ZW}mu&k1l2hU@Tc zQ`x|drV^bCu9=w15wq#^zRmg+YABmvN?6d81q{|K9B zmxCDxxvU6YvI7m2HXU7a!pP>wxolj)RqW8W9f+bIDxvA(yC2ipp+(2AJ=IfHh^K3L zrayjDnGa_0vpjZ?6gXb!c$#e*ppxV1e2vG#qA$CV3V97eFiRj?$D}B;A0K`XJG7v9 zzD6oZ@r+20bY%kX-2jE>YnJZ2wxd~~6;#Zzc9|u*%&v!M&#-jOQguc5d|fe(KqQ_;*YaP&Y8qDbQt12(wm>k#Z9f|OW}Wm?*#E3;gg!Fuz112#><6q*-lmTefm z@3_au+)>bN7aBoPJx_NrW_SW0eIA=CLD+1ZvIDi}s;&|7H$qk`nSKOqphAb+uIYy% zFGOr~M`%QdqON+bfW(&d{Rv0f(Er3K{7%^bqs9c%>= zm>Shp15Y<$e?q=vIvXO9`tl<@o@vT17CvMKGpa(x_H@t0=FPyAm1ydGe*9UiKmYj* zHlixhP0zHz4zLB5rpaf{OFE^QY#0nl;CmiO6q>35n>MW}>AY|zPSp-|6K9RxD2f|+ zO5Hh0=T|e?k&>-hmMQy=YS}moMd!zz#eymgb_rI?4WQ;c4X1r>g7V>6>?lc=HT*=L z3FQ^qU|N}vp2enDIZ&>uEL$Ls;+v)#3{R-g{sL$Um<%t_0>^Q6IgCOlj7fw)xHFse zkzk@o%52rJ6cF9zqh_;F5-BEA^+Oy5PSVx*%Gqp6L2&}xHf$?2Wi!zHUr&+NB72Xe%QExG?D@>CVQ9+`T|TT^M*OhkU}j|Lkl7S z_KKWY!(*&|^Jn8Ho2Hd;10WlbtH_=f=pLv71wMOZ49KOqtXKu30-fwZzI|2pLu1b2 zyF2&cQwYL!E!lK6SO!R^uX}U#7@}J|4~7S#0`UVK6dl^!tS@n5r0OyZu3|u$=-|Zf z=CWlHG#-fq6rkZ7aC-RF^=uS)T(#7|2n=10B3CmTWB!y>E0l4@R_K75GKT2Y0Q%ZK z)R&D@fmqmKY&+0So(#XoRroqIR(VknnHWTc9e3o=TQHVq>sbvyYZ>cQ zrAMk9YC04V*(KRscs6xb^AqN=i4uNB(Xh1$-0s3|xjJ7rkI9m3$)V%gL0~Gb5d;d~ zF^^eN>9TTLH<^$H$jYxxGH3Au?(+K(L^O;knM3xsB9-Wy1GCIwvNsE<} zF3qNTzrQ4-gn`X)A_5cUt*StjZ&RK@uP_w{wZ~z?q#w8f^(rgo7zmWCf`z~Nd7QFy+?}YHW;EZ{p zygWNA={%-#;Ve)lTcP)P3Lgq`pZ|J&4>K+;hz5wsDh}B7+6T+F%49yCCM^Q|E%_8O& zVW=Fa($uD0gbx_NbWOhTTU7PD%}gO~st_A&P6 zZT{q9c2Ln#;F&6}8ac8KePmpN(~U{mc?s)Q@GQ>(3pu)PMULm{Kjov&V`oaf1tvIl3+2>6t9*f2@eZTLD4oH&FYju-JY=ddG+hA+d10#7TXTwUwNtdXdW#&DtA zNUF&-;Rm^v4_VVaMT_{M=dv1*9j+yW!-HQaLmK#*=fd=Oa5OZ-LQrAIaLZMG^SL-_ z*h<)FP~3@Z6XLlldjh|P#CY`+toH#?WBr_IGn>Lj%;iOJFn##wo`M6k_=xjxYJneN zeQpFj183G!`F-cH+p8iAXXa_}??X~*;jLNz_B{~M2(bov&fuBAkVA{#e?B`&vd{_@ z0C~g`Y}w0aggt zNLBcXrR)%RQkEra5xh+VL{1dmj-N3i%Rs7I>NU-84Be(UaG9Zdx)lYs?AU>9Sgw8t zL=?W5r1`#WMIi=(s(}gSCoE%wB)CFwp`cnESa(ke_*Ki;WQnY_2dC5~Q{#X_pDkkp zifW+29kVpc(^N~b!?Jp6t1JVd>#0r-2AeSy-v%9-N05dwDY@7~O4lD}qRNd7T-tiK)umG0? z&IY-ahUxm6{}BIp3E0;+75JmBg5TneBAf+(_7Y}GuIdDe1(z6N#C_~XgMBon?uJS0CE@O?=etpAY;6TMXD!dq|4H-5Eb6>`m6rps%HOM}|t?)tl z$Fi5wOtbjDm$UXo#}1*ld}s}vv1=)h<5DgAD9-)PhuIN)`Q@xbQH@MUrx%$D+%%lo z6UhK)^_m|dz0p+P=uVHrDVjln&Qxtu*$!8(fI}4eibZ}YLb*VP^gR_5uc*WC*R24a znk6fc)n7xN3-_}={G%%n7s9kbal@oIaI+0L`c0Ng_p@O|Br>31d>Bp-L{q${@%JFG zm9zLCSFnyn3%WJLR$#sZM^)4S? z4TWeU85DTnaRq*|YQ4^PUCZ=B;2JWVLTGUpF`FmH*j}_Y=1Szf?SRt}qfeU(b_vcJ0!k9QZkPueL;C}gES)1401nz(0 z=d1&S4dRP*lB*a2Wf(r;N8QY{g6%-kLd%0MDkD>7?%-G4%;pyY9VQzV9eNkrx3y1s z$6HuU!8VZsvm)J9z>Uy|pCwFf$&~1dkeH!_o9uti3#-^+1!T~CD-4i^Gmsv0gMag> ztB^Vf91G;buf2yJxYGL~8N=0V#fSIdK#&k<*k2~ip$toGxB(^mkO?yWLqp3wOnpQt z<%(Pv5CfTv2ehZ+?&S5i!0IC!cIPP)p$G4CV>L54Zz~hCtWgvF?FYj_I8&*&?9jP5ekTB%PaoFE*|5i4-m#R|I z#_=6k5*)_2S#~(mveOoXjq_*L&%JhZ+hX;uY*pMAE(-m#o5E=xQpU5E=J?wy*_R{ttpS*jmKpVFcphF?D`9wIa!+f#IMik%iVglfU*q%tl#bzRHb3WfHmC|D(vVeGk#!7_`M56U zk@X$Idp*JW72r%NMg;dYP?3IAwCk_^wrwvy^bU$2!4W379$ua;UWY3^X4CKlAU3VfM=UT|kz~`b= zCzw#nf{AhDmL#_8M)t? zJG0CS`|+FaVM99MtdIso8Xo!{THm`X_q{A>Cl9d{(qoV|qK#F zTF?4Pj)i;)a?jB7B<<^Y$NSlE+`}Mu8X@Oy!*dU8{Q*Ape&kCba&BNikQ^0i#kC*g ztL~?m-_Q-;H7LM=7zgHt++A5d?SA+uo!7B*3W$$!TNEM!frL0t^blXOjtwfp*VA<* zIN$_Rlb?lxd}N|c1wtt!!=Y`0 zNZfKiQ~AR6Oez{KVo(^N$O}x|HU*n=!}zo(;r%?c9=Q)J90nSWi;5c~C5RpY5pmHM zlc_K7@c`>uG;z5TLK0z%aT(@DkLHfxSEGYZdjS3z%sy-!++lc6SeW)Je&qwqD`102 zQ&5Cu`cQZ7V>dhq(+8UoA}bfzSSB*Z^5ePVlA+FcFitqQh%6x*P^36n?}=QP^xpR% zP5}-%(xOOsAfG~aGEeev9)w}kk()%s6za&tz?}@A;-faO+5*yQ6p02PiEP7>`!!#@ z0cR$I_}GKx!375QX}{r{HqfEK*M^q@pU8uXx6G##!czVLNeWY;l&R*pTXN^7B9r!y zk%2-sLqUQq1c_vD;WIgz-+vKqGul6lUe%#s!1Zhw*&o=XXLD!5WADP-Y-U!c83-yp zq!V;p4Io*r+go!>b`L+X2%$h&1g9Md5X5rYZ*!A(_g3>^8=)?cfkcdGEAS_91X}o9 zyliMsO+i*3mw6GA)LQsFzh)ylt^gk&NmXz$I0AW1;|2cdMs`*anK$*b4^TfB~@(CK_-S9Pju1m`7N* zPKttCG+cqW&?5+~{6FLnWW-pwj-FNkU*l#N@t&?j5o*q>eAgpzACWb4ffgc2M`pm+ z`FD@7I=YU2oeh3ki62SWh%@KNo>kaRXTsnwd@fbWi$RGNVvvO@8GNAm4 z-~AXHScILHH6uXW6~KAWgFnL}#K919$6X38a?&n@6s|v%#hcLlao_$IU_dwzxcvl~ zROo1cyv5ze*_c8gM+WQ=zzrRjLE+nc!{e;BDB}bTr0S4iggat8@1!km6|%>;dj&6o zY6$SqW?kaNCFE+phH&{`M2>;GzaM zC5VtbgF3?vwfk3iN>Dim9pKl`X@Fk^Rc6@WDCFXiu5(PJbl&GvpG0IBf@3HW@ZyUy zC;T9H3}GHx(@@_qZGk)c?2tlTaxrivr$8a#a!%F$24fwow8B%YQ&H9t7vMN>BZ#c0 z>i=D^*l|y>UPa;}q!19nS@7ute|zr8WJCNZ`~yaCGVWS%d8~xUL5KQ3__I&3J_T~d zOkB!>$0&QPeHi;Y1%!vVxU!+@z=E3Tf0Q&+o)A_Cx(@Lit`9zro15Ww;hbQ=k#m=E ze}poE!WrxBs+hjnk*aUsm`e$Knc-di33e9i=LgPgMOh zS15x{TM{d$lhpG&Y?7vUqa3#PI&SI4C-Y<#sp!=-*)y+@8gwt_r5Q|9fr zuoEQDKwbu1kI2-tumE1a1q>YL`Vd~|3f79m;eT^u__S5*K>pGe*0H08tT6O|N_lo< z;`zs0*zjt61Ho6}pCbE*?2+btn^T8jX8ztKtanE^@)2S-Xf+Fws>|m-gZ#1qe_DpZ zckrbS8J-7!l$1rI5=p~R0H4h`1BbzSAyW;&d7k@jPJi75ajjGB9(6-p`;+a gimzKB5|9nP{#iDq^X|WjRiny^Ggwvz%htgE2QTqsRsaA1 diff --git a/substrate/srml/contract/src/exec.rs b/substrate/srml/contract/src/exec.rs index af900081d3..44dacb2799 100644 --- a/substrate/srml/contract/src/exec.rs +++ b/substrate/srml/contract/src/exec.rs @@ -653,7 +653,7 @@ mod tests { fn insert(&mut self, f: impl Fn(MockCtx) -> VmExecResult + 'a) -> CodeHash { // Generate code hashes as monotonically increasing values. - let code_hash = self.counter.into(); + let code_hash = ::Hash::from_low_u64_be(self.counter); self.counter += 1; self.map.insert(code_hash, MockExecutable::new(f));